美文网首页
重学JavaScript-1

重学JavaScript-1

作者: Gambler_194b | 来源:发表于2021-05-10 11:45 被阅读0次

    var let const 的比较
    var 关键字的作用于是函数作用域,有申明提升
    example:

    // 申明提升
    function test() {    
      console.log(name);   
      var name= 'wang'; 
    } 
    test();  // undefined
    
    // 函数作用域
    function test() {    
      var message = "heihei"; 
    } 
    test(); 
    console.log(message);   // ReferenceError: message is not defined
    
    // 可以定义相同的变量
    var  age = 18
    var  age = 20
    console.log(age)  // 20
    

    let 关键字是块级作用域,没有申明提升,不能定义相同的变量
    example

    if (true) {   
      var age= 18;   
      console.log(age);   // 18
    } 
    console.log(age);   // 18      块作用域是函数作用域的子集,所以这里可以打印出18
    
    if (true) {   
      let age = 18;   
      console.log(age);   // 18
    } 
    console.log(age);     // ReferenceError: age is not defined      在 if 块级外面,会报未定义
    
    let age = 30; 
    console.log(age);    // 30 
    if (true) {   
      let age = 26;   
      console.log(age);  // 26 
    }   
    // 这里不会报错,因为JavaScript引擎会记录用于变量声明的标识符及其所在的块作用域,因此嵌套使用相同的标识符不会报错,而这是因为同一个块中没有重复声明
    

    const 的用法与 let 基本相同,唯一一个重要的区别是用它声明变量时必须同时初始化变量,且尝试修改const声明的变量会报错。
    注意:
    const声明的限制只适用于它指向的变量的引用。如果const变量引用的是一个对象,那么修改这个对象内部的属性并不违反const的限制。

    const person = {}; 
    person.name = 'wang';   // 会修改成功
    

    相关文章

      网友评论

          本文标题:重学JavaScript-1

          本文链接:https://www.haomeiwen.com/subject/nxabdltx.html