javascript复习。

1.变量提升

JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。

console.log(a);
var a = 1;

输出 undefined 。 等同于

var a ;
console.log(a);
a = 1;

这就是所谓的变量提升。下面的情况不会出现变量提升, 输出 b is not defind; 

console.log(b);
b = 1;

  

2.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');
  }
}

如果想让else代码块跟随最上面的那个if语句,就要改变大括号的位置。

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

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

4.do...while循环与while循环类似,唯一的区别就是先运行一次循环体,然后判断循环条件。不管条件是否为真,do..while循环至少运行一次,这是这种结构最大的特点。另外,while语句后面的分号不能省略。

5.需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true

6.

原文地址:https://www.cnblogs.com/xizhilang/p/6550127.html