1. 块级作用域与常量变量(const与let)

(1)let 取代 var var命令存在变量提升效用,let命令没有这个问题。

if (true) {
  console.log(x); // ReferenceError
  let x = 'hello';
}

如使用var替代let,console.log那一行就不会报错,而会输出undefined,因为变量声明提升到代码块的头部。违反了变量先声明后使用的原则

2. 全局常量和线程安全(let和const的对比)

let和const,优先使用const,尤其是全局环境,不应设置变量,只应设置常量const

const优于let有几个原因

  1. const可提醒阅读程序的人,这个变量不应改变,也防止了无意间修改变量值所导致的错误;
  2. const比较符合函数式编程思想,运算不改变值,只是新建值,这样也有利于将来的分布式运算;
  3. Js 编译器会对const进行优化,所以多用const,有利于提高程序的运行效率,let和const的本质区别,其实是编译器内部的处理不同。
// bad
var a = 1, b = 2;

// good
const a = 1;
const b = 2;

// best
const [a, b] = [1, 2];

所有的函数都应该设置为常量。

长远看,Js 可能会有多线程的实现,这时let表示的变量,只应出现在单线程运行的代码中,不能是多线程共享的,这样有利于保证线程安全

results matching ""

    No results matching ""