zoukankan      html  css  js  c++  java
  • JavaScript快速入门笔记(3):常量和变量

    本系列随笔是本人的学习笔记,初学阶段难免会有理解不当之处,错误之处恳请指正。转载请注明出处:https://www.cnblogs.com/itwhite/p/12218012.html

    常量

    各种数据类型都有相应的字面值常量:

    • 数字字面值常量,例如:123, 3.14
    • 字符串字面值(使用单引号或双引号都可以),例如:'foo', "bar"

    • Boolean 字面值,仅包括两个值:true 和 false

    • undefined
    • null
    • 数组字面值常量,例如:[1, 2, 3]
    • 对象字面值常量,例如:{ name: "Jack", age: 23 }

    使用 const 声明常量请参考后面“ES6更新”一节。 

    变量声明

    使用 var 关键字声明变量,例如:

    var x, y;
    var a = 123, b = 'foo';

    未初始化的变量,其默认值为 undefined 。

    变量的作用域

    变量的作用域分为:

    • 局部变量:声明在函数中的变量,只能在函数中使用;

    • 全局变量:声明在函数外的变量。另外,函数中使用的未声明的变量,默认也看做全局变量,例如:

    var x = 123;     // 声明全局变量
    function bar() {
        console.log(x);
        z = 456;     // 未声明的变量自动当做全局变量
    }
    bar();           // output 123
    console.log(z);  // output 456

    ES6 更新

    ES6 引入了 let 和 const 两个关键字用于声明变量,它们都支持块级作用域,这是与 var 最大的区别(var 声明的变量只有全局作用域和函数作用域)。

    使用 let 声明变量:建议使用 let ,弃用 var

    var 声明的变量会被“提升”到最前面,这就意味着在代码书写时,变量的使用可以在声明语句之前,解释器会默认给“提升”到最前面,例如:

    var foo = 123;
    function bar(n) {
        console.log(foo);     // 输出 undefined,因为 if 中的 foo 声明被“提升”到了函数最前面,但还没有执行赋值语句
        if (n % 2 == 0) {
            var foo = 456;
            console.log(foo); // 输出 456
        }
    }
    bar(2);

    很多时候这都不是我们所期望的,let 的引入正是为了解决此问题,把上面示例中的 var 替换为 let ,结果就应该是我们所期望看到的了,例如:

    let foo = 123;
    function bar(n) {
        console.log(foo);     // 输出 123
        if (n % 2 == 0) {
            let foo = 456;
            console.log(foo); // 输出 456
        }
    }
    bar(2);

    使用 const 声明变量

    使用 const 声明变量与使用 let 声明变量类似,都支持块级作用域。

    使用 const 声明的变量必须进行初始化(与C/C++不同的是:JavaScript 中 const 变量的初始化值本身不必是常量),初始化后不能对这个变量赋予别的值(即不可以修改这个变量引用的地址,引用的内容本身还是可以被修改的),例如:

    const x = 123;
    x = 456;        // TypeError: Assignment to constant variable.
    let y = { a: 1, b: 2, c: 3 };
    const z = y;
    z.b = 4;        // ok
    console.log(z); // {a: 1, b: 4, c: 3}

    完。

  • 相关阅读:
    移植ssh到mini2440
    VMware中Ubuntu安装VMware Tools步骤及问题解决方法
    Linux的网卡由eth0变成了eth1,如何修复
    mini2440移植所有驱动到3.4.2内核详细解说
    单片机的一生(感觉在说大部分人)
    mini2440移植linux-3.4.2内核详细解说
    Ubuntu中恢复桌面的上下默认面板命令
    mini2440移植最新u-boot-2012.04.01详细解说
    MyEclipse CI 2018.8.0 官方最新免费版(破解文件+激活工具+破解教程)
    cocos 获取一个骨骼动画多次显示播放
  • 原文地址:https://www.cnblogs.com/itwhite/p/12218012.html
Copyright © 2011-2022 走看看