javascript的let,var

在javascript中变量的声明方式var,let,const等会让人糊涂,这里简简单的总结一下:

var 是function scope ,而 let 是 block scope, function scope 的意思是变量是声明在函数内部,而block scope 意思是变量声明在 for循环,if,else 等块当中。

下面的是function scope.

function iHaveScope() {
  // local function scope
  function iHaveNestedScope() {
    // nested local function scope
  }
}

下面的是block scope.

{ var a } // undefined object in a block scope
if (3 == '3') {
  // block scope for the if statement
}
for (var i=0; i<10; i++) {
  // block scope for the for statement
}

而var 在 block scope 和function scope 里表现的不一样,在function scope 里声明的变量在function 外面不能使用,而在block scope 里声明的变量在 block 外面可以使用。

function iHaveScope() {
  var secret = 42;
}
secret; // ReferenceError: secret is not defined (in this scope)

 

for (var i=0; i<10; i++) {
  // block scope for the for statement
}
console.log(i) // => 10 (why oh why)

 因此当我们用var 来在一个块中定义变量会有问题,因此需要一个关键字使变量只能在那个block 里面起作用。

for (let i=0; i<10; i++) {
  // block scope for the for statement
}
console.log(i) // ReferenceError: i is not defined (D'oh!)

 

global scope

下面我们说一说当变量通过var,let 在全局声明的时候的区别.

当一个变量通过var 来全局声明的时候是挂在window object ,但 通过let 来声明的时候不会挂在 window object。

var varVariable = “this is a var variable”;
let letVariable = “this is a let variable”;

console.log(window.varVariable); //this is a var variable
console.log(window.letVariable); //undefined

当我们打印通过let 来声明的变量的时候会出出现错误,因为它们不能全局被全局得到。

如果需要更加深入的了解请参考这里:var vs let,var and let 以及 var and let global use.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值