javascript声明变量的4种方法是什么


当前第2页 返回上一页

例子一,验证 var 的重复声明:

1

2

3

var a = 1;

var a = 2;

var b = a + 1; // 3

  • 首先是声明变量 a ,初始化为1
  • 紧接再次声明变量 a, 初始化为2
  • 最后声明变量 b , 它初始化值是 a + 1

例子二,验证 let 的重复声明:

1

2

let a = 1;

let a = 2; // Uncaught SyntaxError: Identifier 'a' has already been declared

1

2

var a = 1;

let a = 2; //Uncaught SyntaxError: Identifier 'a' has already been declared

  • 很显然在同一个执行环境中使用 let 进行声明的变量是不能重复声明,否则会抛出错误
    const 和 let 在重复声明方面的表现是一致

作用域的范围

  • var 的作用域是以函数为界限
  • let 和 const 是块作用域
  • var 可以定义全局变量和局部变量,let 和 const 只能定义局部变量

封装一个阶乘函数来举例,没有使用尾递归,就是使用 for 和 if 的搭配实现
例子一,阶乘函数验证作用域域范围:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

var num = 5;

 

function factorial(num) {

 

    var result = 1,resultValue = 0;

 

    for (let i = num - 1; i >= 1; i--) {

 

      if (i === num - 1) {

        resultValue = num * i;

      }else{

        resultValue = num * i / num;

      }

 

      result *= resultValue;

    }

 

    // i 是用 let 进行定义它的作用域仅仅被限制在 for 循环的区域内

    // i++;// Uncaught ReferenceError: i is not defined

 

    return result;

}

 

// result 是用 var 进行定义,他的活动区域在 factorial 函数内

// result++; // var的作用域.html:34 Uncaught ReferenceError: result is not defined

 

factorial(num); // 120

const 和 let 在作用域的范围的表现也是一样

例子二,验证 const 的作用域:

1

2

3

4

5

{

  const NUM_1 = 10;

}

 

let b = NUM_1 + 1;  // Uncaught ReferenceError: NUM_1 is not defined

例子三,验证 var 可以定义全局变量,let 和 const 只能定义局部变量

  // 可以挂载到全局作用域上
  // var name = 'window scoped';

  let name = 'let scoped'; //是不挂载到全局作用域中

  let obj = {
    name: 'myName',
    sayName () {

       return function () {
        console.log(this.name); // 打印出来为空
      };
    }
  }

  obj.sayName()();
  console.log(window); //name 这个属性的值没有,如下图

这里写图片描述

若这样改一下就可以得到我们想要的值:

  • 把用 var 定义的 name 的代码取消注释,把用 let 定义的 name 的代码注释。

这个同时也涉及到新问题 this 的指向。后面的文章再详细举例验证


const 的特殊之处

const 与 let , var 其实还是有些地方不一样的

例子1:验证 const 的特殊之处(一)

1

2

const NUM = 100;

 NUM = 1000; // Uncaught TypeError: Assignment to constant variable

  • 经过 const 方式进行声明,之后赋值完毕,则不可以进行改变,否则会报错

但是也有例外

例子二:验证 const 的特殊之处(二)

  const obj = {
    name: 'xiaoMing',
    sayName () {
      return this.name
    }
  };
  obj.sayName(); // xiaoMing

  obj.name = 'xiaoHong';
  obj.sayName(); // xiaoHong
  • 使用 const 首先声明一个变量 obj , 并且这个变量指向我们在内存中创建的对象,你会发现我们改变里面的属性是没有任何问题

若这样改一下:
例子三:验证 const 的特殊之处(三)

  const obj = {
    name:'xiaoMing',
    sayName(){
      return this.name
    }
  };

  obj = {}; // Uncaught TypeError: Assignment to constant variable
  • 若改变该变量的指向的对象,则就会报错。这种错误和 「 验证 const 的特殊之处(一)」的错误是一样的

更多编程相关知识,请访问:编程视频!!

以上就是javascript声明变量的4种方法是什么的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

一招搞定javascript猜数字小游戏

你必须知道的10个chrome开发工具和技巧

javascript怎么删除信息

javascript怎么设置高

详细了解javascript中的构造器

轻松理解函数防抖和节流的使用

js中什么是原型

如何从javascript到typescript?

javascript算后端么

原来es6 module还可以这样用!(备忘单)

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...