美文网首页
JS变量声明提升, let var

JS变量声明提升, let var

作者: whenitsallover | 来源:发表于2018-09-30 20:06 被阅读0次

JavaScript的一个特性之一是,你可以稍后引用定义的变量,而不会发生异常。
这一现象被称为变量声明提升(hoisting),声明后得到的变量是undefined 值。
所以即使在引用或使用某个变量后存在初始化和声明操作,得到的仍将是undefined值。

console.log(a)
var a=3

undefined
等效于

var a;
console.log(a)
a = 3;

####顺便说下let 和 var 的区别
通过var定义的变量,作用域是整个封闭函数,是全域的 。通过let定义的变量,作用域是在块级或是子块中。
for (let i = 0; i < 10; i++) {
  // ...
}

console.log(i);
// ReferenceError: i is not defined
//计数器i只在for循环体内有效,在循环体外引用就会报错。

-不论var声明的变量处于当前作用域的第几行,都会提升到作用域的头部。 
-var 声明的变量会被提升到作用域的顶部并初始化为undefined,而let声明的变量在作用域的顶部未被初始化

// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
//相当于在第一行先声明bar但没有初始化,直到赋值时才初始化

相关文章

  • 块级绑定

    块级绑定 let 声明 var 声明变量存在变量提升。 let 声明的语法与var的语法一致。 let声明会将变量...

  • 猫眼

    var变量提升,函数声明提升,消除变量声明提升(let); 高阶函数,函数式的编程,柯里化 原型链继承,js面向对...

  • 前端面试题整理

    针对js的问题 let 和 var的区别是什么var声明的变量都是全局变量,不存在局部变量,有变量提升;let可以...

  • JS变量声明提升, let var

    JavaScript的一个特性之一是,你可以稍后引用定义的变量,而不会发生异常。这一现象被称为变量声明提升(hoi...

  • ES6语法

    一、变量的声明 变量声明:全局变量var、块级变量let、常量const。 var:全局变量,会有变量提升 let...

  • var与let、const的区别

    var声明的变量会挂载在window上,而let和const声明的变量不会 2.var声明变量存在变量提升,let...

  • 3小时入门javascript

    JS基本数据类型及变量声明在js中有三种声明变量的方式:var let const,let var const的区...

  • var、const和let

    一.var声明的变量会挂载在window上,而const和let变量不会 二.var声明变量存在变量提升,let和...

  • js中var,let,const的区别

    var声明的变量会挂载在window上,而let,const不会 var声明变量存在声明提升,其他声明方式不提升 ...

  • js中的变量提升、函数提升

    const\ let声明的变量,不会提升,且只能声明一次 1、var a=1 变量声明,只会提升var a 实际执...

网友评论

      本文标题:JS变量声明提升, let var

      本文链接:https://www.haomeiwen.com/subject/xdfgoftx.html