资讯专栏INFORMATION COLUMN

JavaScript语句的一些注意要点

赵连江 / 2172人阅读

摘要:语句规定了一组语句也被成为流控制语句语句大多数编程语言中最为常用的一个语句就是语句。语句语句是一种精准的迭代语句。语句该语句的作用是将代码的作用域设置到一个特定的对象中。

语句

ECMA-262 规定了一组语句(也被成为流控制语句)

if 语句

大多数编程语言中最为常用的一个语句就是if 语句。语法如下:

if (condition1) {
    statement1;
} else if (condition2) {
    statement2;
} else {
    statement3;
}

举个例子:

var num = 10;
if (num > 50) {
    document.write("bigger than 50")
} else if (num < 0) {
    document.write("smaller than 0")
} else {
    document.write("between 0 and 50")
} //"between 0 and 50"
do-while 语句

这是一个后测试循环语句;只有在循环体中的代码执行以后,才会测试出口条件。

do {
    statement;
} while (expression);

举个例子:

var i = 0;
do {
    document.write("the number is " + i + "
"); i++; } while (i < 10);
while 语句

这是一个前测试循环语句;在循环体中的代码执行以前,就会测试出口条件。

while (expression) statement

举个例子:

var i = 0;
while (i <= 10) {
    document.write(i + " ");
    i++
} //0 1 2 3 4 5 6 7 8 9 10
for 语句

这是一个前测试循环语句;在循环体中的代码执行以前,就会测试出口条件。

for (initialization; expression; post-loop-expression) statement

举个例子:

for (var i = 0; i < 11; i ++) {
    document.write(i + " ")
} //0 1 2 3 4 5 6 7 8 9 10

使用while 语句做不到的,用for 语句也做不到。

由于ECMAScript 中不存在块级作用域,因此在循环内部定义的变量也可以在外部访问到。

for-in 语句

for-in 语句是一种精准的迭代语句。可以用来枚举对象的属性。

语法如下:

for (property in expression) statement

下面是示例:

var cars = new Array;
cars = ["benz","BMW"];
for (x in cars){
    document.write(cars[x] + " ")
} //benz BMW

通过for-in 语句循环输出的属性名的顺序是不可预测的。如果表示要迭代的对象的变量值为null 或undefined,for-in 语句会抛出错误。因此建议在使用for-in 循环之前,先检测对象的值是不是null 或undefined。

label 语句

使用label 语句可以在代码中添加标签,以便在将来使用。语法如下:

label: statement

下面是例子:

start: for (var i = 0; i < 5; i ++){
    document.write(i + " ");
    if (i == 2){
    }
} //0 1 2 3 4
break 和continue 语句

虽然,两个语句都是会导致立即退出循环。但break 会强制继续执行循环后面的语句;而continue 则会退出循环后从循环的顶部继续执行。举个例子:

var num = 0;
for (var i = 1; i < 7; i ++){
    num ++;
}
document.write(num + "
"); //num 初始值为0,循环体执行了6次,每次num + 1,结果是num = 0 + 6为6 var num = 0; for (var i = 1; i < 7; i ++){ if (i % 5 == 0){ break; } num ++; } document.write(num + "
"); //num 初始值为0,循环体执行了4次,每次num + 1,结果是num = 0 + 4为4(当i = 5时退出循环) var num = 0; for (var i = 1; i < 7; i ++){ if (i % 5 == 0){ continue; } num ++; } document.write(num + "
"); //num 初始值为0,循环体支行了5次,媒体num + 1,结果是num = 0 + 5为5(当i = 5时退出循环,从循环的顶端继续执行)

另外,break 和continue 语句都可以与label 语句联合使用。如:

var num = 0;
outermost:
for (var i = 0; i < 10; i ++){
    for (var j = 0; j < 10; j ++){
        if (i == 5 && j == 5){
            break outermost;
        }
        num ++;
    }
}
document.write(num); //55 正常情况下应该是i 从0 - 9有10种可能,j 从0 - 9也有10种可能,一共是10 * 10 = 100种可能,即该循环会执行100次。
//当i = 5同时j = 5时停止循环,实际上循环了55 次(i = 0时,j有10种可能,即10次循环;i = 1、2、3、4时,也有10种可能,一共加起来则有50次,最后加上i=5时的5次,共55次),num则为55。
var num = 0;
outermost:
for (var i = 0; i < 10; i ++){
    for (var j = 0; j < 10; j ++){
        if (i == 5 && j == 5){
            continue outermost;
        }
        num ++;
    }
}
document.write(num); //95
//当i = 5时且j = 5时,将会从头开始循环,也就是跳过了i = 5,j = 5、6、7、8、9这5种可能,并且继续循环。所以就是100种可能减去这5种可能,则结果是num = 95。
with 语句

该语句的作用是将代码的作用域设置到一个特定的对象中。with 语句的语法如下:

with (expression) statement

举例:

with (location){
    var qs = search.substring(1);
    var hostName = hostname;
    var url = href;
}

上面的写法就是从下面这个语句改过来的:

var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;

该语句会使性能下降,不建议使用

switch 语句

语法如下,可以用来代替if 语句:

switch (expression) {
    case value:
        statement;
        break;
    case value:
        statement;
        break;
    case value:
        statement;
        break;
    default:
        statement;
}

例子如下:

var i = 15;
if (i == 25){
    document.write("the num is 25");
}else if (i == 35){
    document.write("the num is 35");
}else if (i == 15){
    document.write("the num is 15");
}else {
    document.write("others")
}

上面的if 语句就可以写成下面的switch 语句:

switch(15){
    case 15: //相当于if 语句中的else if
        document.write("15");
        break;
    case 25:
        document.write("25");
        break;
    case 35:
        document.write("35");
        break;
    default: //相当于if 语句中的else
        document.write("others");
}

为每个case 后面都添加一个break 语句,就可以避免同时执行多个case 代码的情况。

当一种情况和另一种情况所产生的结果需要合并又该如何操作呢:

switch(15){
    case 15: //相当于if 语句中的else if
        document.write("15");
    //  break; 这里忽略了break 就可以让case 15 与case 25 合并,在这里就是同时执行document.write("15") 和document.write("25")
    case 25:
        document.write("25");
        break;
    case 35:
        document.write("35");
        break;
    default: //相当于if 语句中的else
        document.write("others");
}

具体的来说就是,如果需要混合几种情形,只需要省略break 关键字即可。但不要忘了在代码中添加注释说明是有意省略了break 关键字如:

switch (3){
    case 1:
    document.write("the number is 1" + "
"); break; case 2: document.write("the number is 2" + "
"); break; case 3: //合并两种情形 case 4: document.write("the number is unknown" + "
"); }//"the number is unknown"

另外,switch 语句可以使用任何数据类型,每个case 的值甚至还可以是变量和表达式。如:

var x = "oliver young"
switch (x){
    case "oliver " + "young":
    document.write("hello Mr.young.");
    break;
    case "troy":
    document.write("hello troy.");
    break;
    default:
    document.write("sorry, i didn"t know you.");
} //"hello Mr.young."

或者:

var num = 10;
switch(num){
    case 100 - 90:
    document.write("right");
    break;
    case 100%10:
    document.write("also right");
    break;
    default:
    document.write("bad num");    
} //"right"

又或者:(注意switch(true))

var num = 8;
switch(true){
    case num.toString(10) === 8:
    document.write("true num");
    break;
    default:
    document.write("wrong num");
} //"wrong num"

上面这个例子中,之所以要给switch() 传值true,就是为了使得每个case 值都可以返回一个布尔值。这样,每个case 按照顺序被求值,直到遇到匹配的值或者遇到default 语句为止。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86152.html

相关文章

  • JavaScript函数一些注意要点

    摘要:函数函数的基本语法是下面是个示例另外,任何函数在任何时候都可以通过语句后跟要返回的值来实现返回值。如另外,可以与命名参数一起使用。如不会执行第一个函数两个参数相加,只执行最后一个同名的函数第一个参数加上 函数 函数的基本语法是: function functionName(arg0,arg1,...,argN) { statements } 下面是个示例: function...

    caiyongji 评论0 收藏0
  • JavaScript 表单脚本——“表单序列化”注意要点

    摘要:浏览器如何将数据发送给服务器对表单字段的名称和值进行编码,使用和号分隔不发送禁用的表单字段只发送勾选的复选框和单选按钮不发送为和的按钮多选框中每个选中的值单独一个条目在单击提交按钮提交表单的情况下,也会发送提交按钮。否则不发送提交按钮。 浏览器如何将数据发送给服务器: 对表单字段的名称和值进行URL编码,使用和号(&)分隔 不发送禁用的表单字段 只发送勾选的复选框和单选按钮 不发送t...

    BlackHole1 评论0 收藏0
  • Javascript执行环境和作用域注意要点

    摘要:所以,全局执行环境的变量对象始终都是作用域链中的最后一个对象。搜索过程从作用域链的最前端开始,逐级向后回溯,直到找到标识符为止。查询标识符搜索过程就是沿作用域链向上查询的过程。 执行环境 执行环境就是环境,是js中最重要的概念。执行环境定义了变量或函数有权访问的其他数据。每个执行环境都有一个与之相关的变量对象(我们编写的代码无法访问这个对象)。 全局执行环境(是最外围的执行环境。在W...

    CKJOKER 评论0 收藏0
  • JavaScript函数表达式——“函数模仿块级作用域及函数私有变量”注意要点

    摘要:模仿块级作用域在块级语句中定义的变量,实际上是包含函数中而非语句中创建的。避免对全局作用域产生不良影响这种方式可以通过创建私有作用域,避免对全局作用域产生不良影响。一般包括函数的参数局部变量和内部定义的其他函数。 模仿块级作用域 在块级语句中定义的变量,实际上是包含函数中而非语句中创建的。如: function outputNumbers(x){ for (var i = 0;...

    archieyang 评论0 收藏0
  • JavaScript 代码优化和部署——“性能和部署”注意要点

    摘要:注意作用域避免全局查找以上代码应该修改如下避免语句必须使用语句的情况很少,因为它主要用于消除额外的字符。将代码分离称多个文件只是为了提高可维护性,并非为了部署。要进行部署的时候,需要将这些源代码合并为一个或几个归并文件。 注意作用域 避免全局查找 function updateUI () { var images = document.getElementsByTagName(...

    Baaaan 评论0 收藏0

发表评论

0条评论

赵连江

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<