资讯专栏INFORMATION COLUMN

字面量、变量、常量 let const的理解

gplane / 762人阅读

摘要:常量与字面量的区别常量与字面量均不会被改变。常量为存储数据的容器,而字面量为等号右侧的值,字面量是由字符串,数字等构成的字符串或数值。在中,标识符用于命名变量以及关键词函数和标签。

之前竟然对常量、字面量都没有搞清楚,要学习的真的是好的 刚才终于搞清楚了 是该好好在学一遍js的

字面量:在编程语言中,一般固定值称为字面量,如 3.14。
        不是一种值,而是一种变量记法
        等号右侧的值均为字面量  var a = 1
   .数字(Number)字面量 可以是整数或者是小数,或者是科学计数(e)。
     3.14   1001
   .字符串(String)字面量 可以使用单引号或双引号:
     "John Doe"  "John Doe"
   .对象(Object)字面量 定义一个对象:
    {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}
    还有函数字面量、数组字面量等
常量:与变量一样均是用于 ‘存储数据’ 的容器,只不过常量的值在程序的运行中不可以发生改变
        在ES6之前并没有声明常量的方法,在ES6中新增加了const来定义常量
        建议常量的命名全部大写,如果由多个单词构成,可以用下划线分割
        const MY_SITE="http://www.zhangpeiyue.com";//MY_SITE为常量,"http://www.zhangpeiyue.com"为字面量
        只能在初始化的时候被赋值,赋值以后不允许被再次赋值
变量:也是用于存储数据的容器,在程序的运行中可以发生改变或者被再次赋值
        可以使用var关键字来声明变量,变量的值可以是任意类型。为了更好的阅读,建议变量使用驼峰命名法命名:
        var myName="js";//myName为变量,“zhangpeiyue"为字面量
        在ES6中新增了let关键字声明变量,作用与var类似,只是声明的变量只在其所在区域内有效:
        let str="es6";//str为变量,"es6"为字面量
        说明:var,let和不用任何修饰的变量的区别
            num = 1  代表window的一个属性,不能使用delete删除
            var num = 1;代表全家变量,可以使用delete删除
            let num = 1;代表局部变量 
常量,变量,字面量的区别
    常量与变量的区别:常量与变量的存储方式是一样的,只不过常量必须要有初始值,
            而且值不允许被修改,而变量可以无初始值,且可以多次赋值。
    常量与字面量的区别:常量与字面量均不会被改变。常量为存储数据的容器,
            而字面量为等号右侧的值,字面量是由字符串,数字等构成的字符串或数值。    
再说一下标识符:标识符是名称。 在 JavaScript 中,标识符用于命名变量(以及关键词、函数和标签)。
                 标识符须除了关键字、保留字之外才行     
let 是声明变量

它不同于var,不存在变量提升 在声明变量之前该变量是不可用的,否则会报错,这在语法上叫“暂时性死区”;

let 不允许同一作用域内重复声明

在某些场合下var声明变量是不合理的

`场景1: 内层变量覆盖了外层变量
var tmp = new Date();
function f () {
    console.log(tmp)
    if (false) {
        var tmp = "hello world!"
    }
}

f () // undefined


场景2:用来计数的循环变量泄露为全局变量
var a = "hello"
for (var i = 0; i

关于块级作用域,可能有的小白不知道,其实它就是 {} {{}}这就是两个块级作用域了
let就是给js新增块级作用域的那个法器

一些说明  . 外层作用域无法读取内层作用域的变量
         . 块级作用域与函数声明有点复杂 就不多说了 但ES6支持(允许)在块级作用域内声明函数

const是声明常量

它声明一个只读常量,且一旦声明,就不能改变
eg:const PI = 3.1415

      PI  // 3.1415
      PI = 3 // 报错

声明必须赋值,否则报错
eg: const FOO // 报错

不会提升,必须先声明再使用,否则报错

和let一样,不能重复声明,否则报错

const 本质 :

const 实际上保证的并不是变量的值不能改动,而是变量指向的那个内存地址不得改动。
但这对于简单的数据类型来说(数值、字符串、布尔值等),值就是保存在变量指向的内存地址中,因此等同于常量(所以,说const是声明常量好像不太准确了)
但对于复合类型的数据(主要是数组和对象呐),变量指向的内存地址保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,这完全不能由它控制。因此,将一个对象(或数组)声明为常量时一定要考虑好哦

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105818.html

相关文章

  • 【重温基础】1.语法和数据类型

    摘要:语法和数据类型正文开始本章节复习的是中的基本语法,变量声明,数据类型和字面量。声明一个块作用域的局部变量,可赋一个初始值。变量声明有三种方式如,声明局部变量和全局变量。 最近开始把精力放在重新复习JavaScript的基础知识上面,不再太追求各种花枝招展的前端框架,框架再多,适合实际项目才是最重要。 上星期在掘金发布了几篇文章,其中最大块算是 【复习资料】ES6/ES7/ES8/ES...

    Darkgel 评论0 收藏0
  • 带你入门 JavaScript ES6 (一)

    摘要:是国际组织于年月日发布的第六版,正式名为通常被成为或。二模版字面量提供一种简单实现表达式嵌套的字符串字面量操作,简而言之就是能够以简单的方法实现字符串拼接操作。 本文同步 带你入门 JavaScript ES6 (一),转载请注明出处。 ES6: 是 ECMA国际组织于 2015 年 6 月 17 日发布的 ECMAScript 第六版,正式名为 ECMAScript 2015,通常被...

    lindroid 评论0 收藏0
  • 重新复习js

    摘要:复习基础到底是什么的应用场合极其广泛。常量不可以通过重新赋值改变其值,也不可以在代码运行时重新声明。布尔对象是原始布尔数据类型的一个包装器整数整数可以用十进制基数为十六进制基数为八进制基数为以及二进制基数为表示。 复习js day1 js基础 JavaScript 到底是什么 JavaScript 的应用场合极其广泛。简单到幻灯片、照片库、浮动布局和响应按钮点击。复杂到游戏、2D 和 ...

    xuexiangjys 评论0 收藏0
  • 《深入理解ES6》笔记——扩展对象功能性(4)

    摘要:将对象的属性拷贝到了对象,合并成一个新的对象。而这种行为也是新增的标准。总结本章讲解了对象字面量语法拓展,新增方法,允许重复的对象字面量属性,自有枚举属性排序,增强对象原型,明确了方法的定义。但是,就算把全部新增的功能记住也不是难事。 变量功能被加强了、函数功能被加强了,那么作为JavaScript中最普遍的对象,不加强对得起观众吗? 对象类别 在ES6中,对象分为下面几种叫法。(不需...

    baihe 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<