• js常量


    原文链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/const

    const 声明创建一个只读的常量。这不意味着常量指向的值不可变,而是变量标识符的值只能赋值一次。(译者注:JavaScript中的常量和Java,C++中的常量一个意思。注意区分常量的值和常量指向的值的不同)

    语法EDIT

    const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];
    nameN
    常量名称,可以是任意合法的identifier(标识符)。
    valueN
    常量值,可以是任意合法的表达式

    描述EDIT

    这个声明创建了一个常量,可以在全局作用域或者函数内声明常量,常量需要被初始化。这就是说,在定义常量的同时必须初始化(这是有意义的,鉴于变量的值在初始化后就不能改变)。

    常量拥有块作用域,和使用let 定义的变量十分相似。常量的值不能通过再赋值改变,也不能再次声明。

    一个常量不能和它所在作用域内的其他变量或函数拥有相同的名称。

    例子EDIT

    下面的例子演示了常量的特性。在浏览器的控制台试一下这个例子。

    // 注意: 常量在声明的时候可以使用大小写,但通常情况下会使用全部大写英文。 
    
    // 定义常量MY_FAV并赋值7
    const MY_FAV = 7;
    
    // 在 Firefox 和 Chrome 这会失败但不会报错(在 Safari这个赋值会成功)
    MY_FAV = 20;
    
    // 输出 7
    console.log("my favorite number is: " + MY_FAV);
    
    // 尝试重新声明会报错 
    const MY_FAV = 20;
    
    //  MY_FAV 保留给上面的常量,这个操作会失败
    var MY_FAV = 20; 
    
    // MY_FAV 依旧为7
    console.log("my favorite number is " + MY_FAV);
    
    // 下面是一个语法错误
    const A = 1; A = 2;
    
    // 常量要求一个初始值
    const FOO; // SyntaxError: missing = in const declaration
    
    // 常量可以定义成对象
    const MY_OBJECT = {"key": "value"};
    
    // 重写对象和上面一样会失败
    MY_OBJECT = {"OTHER_KEY": "value"};
    
    // 对象属性并不在保护的范围内,下面这个声明会成功执行
    MY_OBJECT.key = "otherValue";

    规范EDIT

    SpecificationStatusComment
    ECMAScript 2015 (6th Edition, ECMA-262)
    Let and Const Declarations
    Standard Initial definition.
    ECMAScript 2017 Draft (ECMA-262)
    Let and Const Declarations
    Draft  

    浏览器兼容性EDIT

    FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
    Basic support 21 (Yes) 36 (36) 11 12 5.1
    Reassignment fails 20 (Yes) 13 (13) 11 ? ?

    兼容性说明EDIT

    在Firefox和Chrome更早期的版本,Safari 5.1.7和Opera 12.00,如果使用const定义一个变量,这个变量的值仍然可以修改。IE6-10 不支持 const,但是IE11支持。

    Firefox-specific notes

    在常量被列出ECMAScript 2015 (ES6)标准很久之前,火狐就已经支持常量。  const ES6 请参照 bug 950547 and bug 611388.

      • 从 Gecko 36开始 (Firefox 36 / Thunderbird 36 / SeaMonkey 2.33):
        • {const a=1};a 出现 ReferenceError 且由于作用域不在返回1 .
        • const a; 现在会出现  SyntaxError语法错误 ("missing = in const declaration"): 必须有一个初始值.
        • const a = 1; a = 2; 现在会出现 SyntaxError语法错误 ("invalid assignment to const a").
  • 相关阅读:
    数据库_连接查询
    日志
    日常小技巧
    『转载』OpenLayers 5 使用turf.js渲染克里金插值计算的等值面
    Openlayers3中如何优雅的表示等值面
    远程桌面拷贝超大文件
    turf.js intersect()裁剪存在空洞
    web worker示例demo
    meta标签作用
    geojson 标准格式学习
  • 原文地址:https://www.cnblogs.com/gavinyyb/p/6412535.html
Copyright © 2020-2023  润新知