首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jsvar let const 区别

一、前言 在ES6(ES2015)出现之前,JavaScript中声明变量就只有通过 var 关键字,函数声明是通过 function 关键字,而在ES6之后,声明的方式有 var 、 let 、 const...二、var 如果使用关键字 var 声明变量,那么这个变量就属于当前的函数作用域,如果声明是发生在任何函数外的顶层声明,那么这个变量就属于全局作用域。...举例说明: var a = 1; //此处声明的变量a为全局变量 function foo(){ var a = 2;//此处声明的变量a为函数foo的局部变量 console.log(a)...三、变量声明提升 提升是指无论 var 出现在一个作用域的哪个位置,这个声明都属于当前的整个作用域,在作用域中到处都可以访问到。注意只有变量声明才会提升,对变量赋值并不会提升。...六、总结 var 声明的变量属于函数作用域,let 和 const 声明的变量属于块级作用域; var 存在变量提升现象,而 let 和 const 没有此类现象; var 变量可以重复声明,而在同一个块级作用域

1.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    jsvar、let、const区别

    javascript中有三种声明变量的方式:var、let、const 1.var 作用域:全局或局部 var的作用域可以是全局或是局部,以下分四种情况说明: (1).当var关键字声明于函数内时是局部变量...(2)当var关键字声明于函数外时是全局变量,此时不论在函数外部还是内部都可以访问到。...(3)当var关键字第一次声明变量于函数外时是全局变量,并且在函数内又使用var关键字声明了同一名字的变量,那么后声明这个是局部变量只作用于函数内,对函数外第一次声明的变量不影响。...(4)当var关键字第一次声明变量于函数外时是全局变量,并且在函数内直接访问赋值了,那么此变量即是声明的那个变量。 var定义的变量可以修改,如果不初始化会输出undefined,但不会报错。

    2.2K20

    JS底层理解var、let、const

    引用数据类型的值是保存在内存中的对象,JS不允许直接访问内存中的位置,所以在操作的时候操作的是对象的引用;因此是引用数据类型是按照引用访问的。...复制变量值 复制基本类型的值 var num1 = 5; var num2 = num1; num1和num2中的5是完全独立的,互不影响 ?...(a); // 2 可能有人会认为是 undefined, 因为 var a 声明在 a = 2之后,会被重新赋值为 undefined。...第二个例子会按照以下流程进行处理 var a; console.log(a); a = 2; 注意:只有声明本身会被提升,而赋值或其他运行逻辑会留在原地。...name); } else { console.log('Hello ' + name); } })(); 立即执行函数的中的变量 name 的定义被提升到了顶部,并在初始化赋值之前是

    2K30

    JSvar与let、const的区别

    var与let、const 一、var声明的变量会挂载在window上,而let和const声明的变量不会: var a = 100; console.log(a,window.a); // 100...声明变量存在变量提升,let和const不存在变量提升 console.log(a); // undefined ===> a已声明还没赋值,默认得到undefined值 var a = 100; console.log...可以 var a = 100; console.log(a); // 100 var a = 10; console.log(a); // 10 let a = 100; let a = 10;...五、暂存死区 var a = 100; if(1){ a = 10; //在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a, // 而这时...,还未到声明时候,所以控制台Error:a is not defined let a = 1; } 六、const /* *   1、一旦声明必须赋值,不能使用null占位。

    2.3K20

    js中const,var,let定义变量的区别

    js中const,var,let定义变量的区别 1.const定义变量不可以修改,而且必须初始化 const b = 2;//正确 // const b;//错误,必须初始化 console.log...('函数外const定义b:' + b);//有输出值 // b = 5; // console.log('函数外修改const定义b:' + b);//无法输出 2.var定义的变量可以修改...,如果不初始化会输出undefined,不会报错 var a = 1; // var a;//不会报错 console.log('函数外var定义a:' + a);//可以输出a...=1 function change(){ a = 4; console.log('函数内var定义a:' + a);//可以输出a=4 } change...(); console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4 3.let是块级作用域,函数内部使用let定义后,对函数外部无影响。

    3.2K30

    死磕JSvar、let、const 该怎么选?

    var 声明的变量会自动提升到函数作用域顶部; var message = 'hi'; function test(){ console.log(message); // undefined...(message); message = 'hello'; // 再赋值; } test(); // 输出 undefined 代码解析后,函数的局部作用域下变量 message 被重新定义了...,在预加载时候 message 的作用域范围也就被框定了,message 变量不再属于全局变量,而是属于函数作用域,只不过赋值操作是在运行期执行(这就是为什么 Javascript 语言在运行时候会改变变量的类型...,因为赋值操作是在运行期进行的),所以使用 message 变量时候,message 变量在局部作用域里没有被赋值,只有栈区的标示名称,因此结果就是 undefined 了 let 申明的变量不会提升。...const 声明的变量,声明时必须同时初始化赋值,且不支持修改,所以也不会提升。 注意:const 声明不可修改的限制只适用于它指向的变量的引用。

    1.9K10
    领券