美文网首页
es6-声明变量

es6-声明变量

作者: heheheyuanqing | 来源:发表于2017-07-28 11:14 被阅读87次

let命令

  • let只作用在所在的代码块内
{
    var a = 1;
    let b  = 2; 
}
a;      //1
b;      //进行报错

通过let声明的变量b只作用在大括号内,在括号外调用变量b时则会进行报错;
  通过var声明的变量在全局中都有效

  • let不存在变量提升,变量的使用前需要先进行定义
{
    console.log(foo);  //输出undefined
    var foo = 1;

    console.log(goo);  //抛出错误
    let goo = 2;
}

通过var声明的变量可以在声明前使用
  通过let声明的变量不能在声明前使用

在编写代码的过程中尽量先声明再使用

暂时性死区

在let声明变量之前的代码称为变量goo的暂时性死区,结束的位置即let声明的代码区;
其本质是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

  • 不允许重复声明
{
    function foo(arg){
        var a = 1;
        let a  = 2;  //报错
        let arg = "hello world !";  //报错
        
        {
        let arg = "i 'am happy !";  //与arg不再统一作用域内,正确
        }
    }
}

只有在相同作用域内重复声明时会出现报错

块级作用域

在块级作用域中对函数声明相当于let语句,在作用域之外不能调用该函数;

对于es6的浏览器,在块级作用域中声明的函数行为相当于var,会提升到全局作用域中
如果需要在块级作用域中定义函数,则应使用函数表达式

// 函数声明语句
{

  function f() {
    let a = 1;
    return a;
  };
}

// 函数表达式
{
  
  let f = function () {
     let a = 2;
    return a;
  };
}

do

块级作用域是一个语句,没有返回值,在块级作用域前加上do将其转换为表达式

{
  let t = f();
  t * t + 1;
//大括号外无法得到t的值
}

let x = do {
  let t = f();
  t * t + 1;
};  //x为大括号内获得的t值

const命令——声明只读变量

  • 使用const声明的变量不能修改变量的值,并且不能只声明不赋值
{
    const PI = 3.14;
    PI = 3;  //报错
    
    const h;  //报错
}
  • 存在暂时性死区
  • 只在所在的作用域内有效
  • 不能重复声明

本质:

const定义的变量不可改动是指变量所指向的地址不可改动;简单类型的数据,值就保存在变量所指向的地址中;复合类型的数据,变量即一个指针,所指向的数据结构是可变化

{
    const a = [];
    a.push('hello world !');  //正确
    
    const foo = {};
    foo.a = 2;
    foo = {"hello world ! "};  //改变了变量foo的指向关系,将会报错
}

可使用Object.freeze方法进行对对象的冻结

{
    const foo = Object.freeze({});
    foo.a = 2;
    foo = {"hello world ! "};  //严格模式下报错
}

声明变量的方法

  • 六种:let、 const、 var、 function、 import、 class

参考链接:http://es6.ruanyifeng.com/#docs/let

相关文章

  • es6-声明变量

    let命令 let只作用在所在的代码块内 通过let声明的变量b只作用在大括号内,在括号外调用变量b时则会进行报错...

  • ES6-变量

    一、let的三大特性之 1-1:不存在变量提升 1-2:不能重复声明 1-3:块级作用域,变量只在代码块内有效

  • 变量 声明

    let:块儿级作用域,同一作用域内,不许声明同一个变量,不能在函数内部重新声明参数,允许块儿级作用域随意嵌套ES6...

  • $ 变量声明

    声明变量的符号“$”变量名称赋予变量的值 声明了变量之后,就可以在作用域内直接调用了。

  • 变量声明

    我们要使用盒子装东西,是不是先要找到盒子,那在编程中,这个过程叫声明变量,找盒子的动作,如何表示: 声明变量语法:...

  • 变量声明

    1、变量声明 上面这段代码声明了一个类型为string的变量name。对于string类型的变量,声明之后没有赋值...

  • 变量声明

    var声明 主要特点:var是函数作用域,只针对函数声明可以多次声明同一个变量不会报错捕获变量怪异之处 let声明...

  • 变量声明

    es6声明变量的六种方法: var,function,let,const, class, import let...

  • 声明变量

    使用var声明的变量会自动被添加到最接近的环境中。在函数内部,最接近的环境就是函数的局部环境;在with语句...

  • 变量声明

    介绍 let和const是JavaScript里相对较新的变量声明方式。 像我们之前提到过的, let在很多方面与...

网友评论

      本文标题:es6-声明变量

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