检测代码运行时间:

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:

  1. for(var i=0;i<10;i++){
  2. var a = 'a';
  3. }
  4. console.log(a); //循环内变量a仍然能被访问,甚至i也可被访问

循环内变量过度共享

  1. for (var i = 0; i < 3; i++) {
  2. setTimeout(function () {
  3. console.log(i)
  4. }, 1000);
  5. } 结果为三个3,而不是0,1,2

使用let代替var即可解决上述问题

合法标识符

以字母、下划线或美元符号开头(数字不可以作为第一个标识符)
后续可以是字母、数字、下划线或者美元符号