let和const

ES6中有两个新特性:letconst,为了理解let,我们需要记住var是创建函数生存期内的变量:

function printName() {
  if(true) {
    var name = "Rafael";
  }
  console.log(name); // Rafael
}

不像Java或其他语言,任何变量在JS中是在一个函数内创建,它会升级到哦函数之外部,不管你在哪里定义变量,都和你在函数顶部定义一样,这个行为称为hoisting。

上面代码用下面方式容易理解些:

function printName() {
  var name; // variable declaration is hoisted to the top
  if(true) {
    name = "Rafael";
  }
  console.log(name); // Rafael
}```
那么let是如何工作呢,和hoisting有什么关系,我们导入let的代码如下:

function printName() {
if(true) {
let name = "Rafael";
}
console.log(name); // ReferenceError: name is not defined
}```
let是在一个代码块内,变量名只能在代码块中可见。

function printName() {
  var name = "Hey";
  if(true) {
    let name = "Rafael";
    console.log(name); // Rafael
  }
  console.log(name); // Hey
}```
总结:```var```是function-scoped,而```let```是 block-scoped.

const是创建常量使用,一旦创建就一直不会被改变,如下:

const SERVER_URL = "http://www.jdon.com"```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    卞卞村长L阅读 627评论 0 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 1,649评论 0 2
  • let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...
    安小明阅读 998评论 0 0
  • let 基本用法 let命令,用来声明变量。用法类似于var,但声明的变量,只在let命令所在的代码块内有效。 f...
    oWSQo阅读 445评论 0 0
  • 1. let ES6新增了 let 命令,用来声明块级作用域变量,学习过其他语言的同学不会陌生,在很多语言中,声明...
    无亦情阅读 251评论 0 0