检测代码运行时间:
console.time();
……
console.timeEnd();
这段代码可以在控制台打印出time()和timeEnd()之间的代码运行的时间
变量定义:let const var
let
- let是声明一个变量,拥有块级作用域
- let不能重复声明两个相等的变量名
- let声明的之可以被修改
- let声明的变量不限制数据类型
在不同的块级作用域中,可以使用相同的变量名,且会访问离自己最近的块级变量
- let声明的全局变量不是全局对象的属性。即你不可以通过window.变量名的方式访问这些变量。它们只存在于一个不可见的块的作用域中,这个块理论上是Web页 面中运行的所有JS代码的外层块。
const
声明变量不赋值,重复声明变量,给变量重新赋值均报错
const声明的变量不能被修改,修改会报错
const常用来定义常量
使用const会生成块级作用域
定义存储位置时存储位置不能被修改,但值可以被修改
var
JS中没有块级作用域,在JS函数中的var声明,其作用域是函数体的全部。
常见bug:
for(var i=0;i<10;i++){
var a = 'a';
}
console.log(a); //循环内变量a仍然能被访问,甚至i也可被访问
循环内变量过度共享
for (var i = 0; i < 3; i++) {
setTimeout(function () {
console.log(i)
}, 1000);
} 结果为三个3,而不是0,1,2
使用let代替var即可解决上述问题
合法标识符
以字母、下划线或美元符号开头(数字不可以作为第一个标识符)
后续可以是字母、数字、下划线或者美元符号