这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
这篇文章主要介绍了 JavaScript 中的语句,包括条件分支语句、循环语句、迭代语句、Lable 语句、break 和 continue 语句、with 语句、swith 语句,十分全面细致,推荐给小伙伴们。
一、条件分支语句:if
基本格式:
if (<表达式 1>){<语句组 1> }else if (<表达式 2>){<语句组 2> }else{<语句组 3> }
执行流程:
二、循环语句
2.1 前测试循环语句:在循环体内的代码被执行之前就对出口条件求值。
2.1.1while 语句
基本格式:
do {<语句组> } while (<表达式>)
执行流程:
2.1.2 for 语句
基本格式: for (<初始表达式>;<条件表达式>;<变动量表达式>){<语句组> }
执行流程:
2.2 后测试循环语句:在循环体中的代码被执行之后才会测试出口条件。
2.2.1、do-while 语句
基本格式:
do {<语句组> } while (<表达式>) ;
执行流程:
三、精准的迭代语句:for-in
基本格式: for (属性 in 对象){<语句组> }
作用:重复执行指定对象的所有属性,可以用来枚举对象的属性。
例子:
- <html>
- <body>
- <p>
- 点击下面的按钮,循环遍历对象 "person" 的属性。
- </p>
- <button onclick="myFunction()">
- 点击这里
- </button>
- <p id="demo">
- </p>
- <script>
- function myFunction() {
- var x;
- var txt = "";
- var person = {
- fname: "Bill",
- lname: "Gates",
- age: 56
- };
- for (x in person) {
- txt = txt + person[x];
- }
- document.getElementById("demo").innerHTML = txt;
- }
- </script>
- </body>
- </html>
如果要表示的对象为 null 或者 undefined,循环体将不再执行,或者抛出错误,因此,在执行 for-in 循环时,应该先检测改对象的属性值是不是 null 或者 undefined。
四、Lable 语句
基本语法:
Label: <语句组>
如: begin: for (var i = 0; i < 10 ; i++){alert(i); } 举例说明 lable 语句的作用: 未加 lable:
- var num = 0;
- for (var i = 0 ; i < 10 ; i++){
- for (var j = 0 ; j < 10 ; j++){
- if( i == 5 && j == 5 ){
- break;
- }
- num++;
- }
- }
- alert(num);//95
加入 lable:
- var num = 0;
- outPoint:
- for (var i = 0 ; i < 10 ; i++){
- for (var j = 0 ; j < 10 ; j++){
- if( i == 5 && j == 5 ){
- break outPoint;
- }
- num++;
- }
- }
- alert(num); //55
第一个例子输出 95 不难理解,第二个例子为什么输出 55 呢,是因为执行到 break outpoint 时,直接跳出到 putpoint 层,执行 alert 语句。
如果把第二个例子改成下面这样:
- var num = 0;
- for (var i = 0 ; i < 10 ; i++){
- outPoint:
- for (var j = 0 ; j < 10 ; j++){
- if( i == 5 && j == 5 ){
- break outPoint;
- }
- num++;
- }
- };
- alert(num);//95
这个结果和第一个例子的结果是一致的。
五、break 和 continue 语句
5.1break 语句:
- var num = 0;
- for (var i = 1 ; i < 10 ; i++){
- if(i%5==0){
- break;
- }
- num++;
- };
- alert(num);//4
break 语句执行后跳到 alert 语句
5.2continue 语句:
- var num = 0;
- for (var i = 1 ; i < 10 ; i++){
- if(i%5==0){
- continue;
- }
- num++;
- };
- alert(num);//8
continue 语句执行后跳到 for() 循环,继续执行循环,直到循环条件不成立。
六、with 语句
基本语法:
with (object) {statements} 举例说明: 不使用 with 的写法:
- var qs = location.search.substring(1);
- var hostName = location.hostname;
- var url = location.href;
- alert(qs);
- alert(hostName);
- alert(url);
使用 with 的写法:
- with(location){
- var qs = search.substring(1);
- var hostName = hostname;
- var url = href;
- }
- alert(qs);
- alert(hostName);
- alert(url);
从上面例子可以看出:with 语句的作用是将代码的作用域设置到一个特定的对象中、减少的重复输入。
但是 js 的解释器需要检查 with 块中的变量是否属于 with 包含的对象,这将使 with 语句执行速度大大下降,并且导致 js 语句很难被优化。
因此并不建议大规模使用 with 语句。
七、swith 语句
基本语法: switch (<表达式>) {case < 数值 1>:<语句组 1> break; case <数值 2>:<语句组 2> break; ... default <语句组> }
执行流程:
switch 语句可以是任何数据类型,每个 case 的值也不一定是常量,也可以是变量、表达式等,例如:
- switch ("hello world") {
- case "hello" + " world":
- alert("Greeting was found.");
- break;
- case "goodbye":
- alert("Closing was found.");
- break;
- default:
- alert("Unexpected message was found.");
- }
- var num = 25;
- switch (true) {
- case num < 0:
- alert("Less than 0.");
- break;
- case num >= 0 && num <= 10:
- alert("Between 0 and 10.");
- break;
- case num > 10 && num <= 20:
- alert("Between 10 and 20.");
- break;
- default:
- alert("More than 20.");
- }
switch 语句在比较时使用的是全等操作符比较,因此不会发生类型转换。
练习:
- <script type="text/javascript">
- var count = 10;
- for (var i=0; i < count; i++){
- alert(i);
- }
- alert(i); //输出什么?
- </script>
for(;;){alert("2");// 输出多少次 2?}
来源: http://www.phperz.com/article/17/0412/273318.html