JavaScript基本语法——细节知识点

属性访问报错还是undefined?

var obj ={
    
    
            name:'yzk',
            age:'20'
        }
        console.log(obj.name);//yzk
        console.log(obj.school);//undefined
        console.log(window.a);//undefined
        console.log(a);//报错

如果使用var重新声明一个已经存在的变量,是无效的。

		var x = 1;
        console.log(x);//1
        var x;
        console.log(x);//1
        //上面代码中,变量x声明了两次,第二次声明是无效的。

中文是合法的标识符,可以用作变量名。

var 临时变量 = 1;
console.log(临时变量);//1

else代码块总是与离自己最近的那个if语句配对。

var m = 1;
var n = 2;

if (m !== 1)
if (n === 2) console.log('hello');
else console.log('world');

上面代码不会有任何输出,else代码块不会得到执行,因为它跟着的是最近的那个if语句,相当于下面这样。

if (m !== 1) {
    
    
  if (n === 2) {
    
    
    console.log('hello');
  } else {
    
    
    console.log('world');
  }
}

需要注意的是,switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符 ===,而不是相等运算符 ==,这意味着比较时不会发生类型转换。

var x = 1;

switch (x) {
    
    
  case true:
    console.log('x 发生类型转换');
    break;
  default:
    console.log('x 没有发生类型转换');
}
// x 没有发生类型转换

上面代码中,由于变量x没有发生类型转换,所以不会执行case true的情况。这表明,switch语句内部采用的是“严格相等运算符”。


标签(label)

JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下。

标签可以是任意的标识符,但不能是保留字,语句部分可以是任意语句。

标签通常与break语句和continue语句配合使用,跳出特定的循环。

扫描二维码关注公众号,回复: 12911337 查看本文章
top:
  for (var i = 0; i < 3; i++){
    
    
    for (var j = 0; j < 3; j++){
    
    
      if (i === 1 && j === 1) break top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

上面代码为一个双重循环区块,break命令后面加上了top标签(注意,top不用加引号),满足条件时,直接跳出双层循环。如果break语句后面不使用标签,则只能跳出内层循环,进入下一次的外层循环。

标签也可以用于跳出代码块。

foo: {
    
    
  console.log(1);
  break foo;
  console.log('本行不会输出');
}
console.log(2);
// 1
// 2

上面代码执行到break foo在这里插入代码片,就会跳出区块。

continue语句也可以与标签配合使用。

top:
  for (var i = 0; i < 3; i++){
    
    
    for (var j = 0; j < 3; j++){
    
    
      if (i === 1 && j === 1) continue top;
      console.log('i=' + i + ', j=' + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
// i=2, j=0
// i=2, j=1
// i=2, j=2

上面代码中,continue命令后面有一个标签名,满足条件时,会跳过当前循环,直接进入下一轮外层循环。如果continue语句后面不使用标签,则只能进入下一轮的内层循环。












猜你喜欢

转载自blog.csdn.net/weixin_45664402/article/details/111268152