面试官竟然问我面试官竟然问我JavaScript中中var、、let和和const有什么区别这样有什么区别这样
简单的问题?简单的问题?
这几天逛这几天逛CSDN论坛,发现在一些前端模块发的问题大都是因为论坛,发现在一些前端模块发的问题大都是因为var、、let和和const搞不清楚导致的,今天我来浅析下,希望对看到这篇博客的童鞋有所帮助搞不清楚导致的,今天我来浅析下,希望对看到这篇博客的童鞋有所帮助
~
What we know is that…(英语作文万能开头) :在JavaScript中有三种声明变量的方式:var、let、const。
目录目录1.var2. let3. const
1.var
(1)var定义的变量在之后可以修改,如果不初始化会输出undefined,不会报错。
var a;
console.log(a); // undefined
// -----------------------------
console.log(a); // undefined
var a = 1;
(2)var定义的变量,可以跨块访问, 不能跨函数访问。
(3)var只有函数作用域,没有块级作用域。
(4)var的作用域是函数作用域,var可以用来声明全局变量,也可以声明局部变量。在一个函数内利用var声明一个变量,则
这个变量只在这个函数内有效。
全局变量:在函数外定义的变量,作用域是整个代码文件。
局部变量:在函数内定义的变量,作用域是当前的函数内部。
var a = 666;
console.log("函数外var定义a:" + a); // 函数外var定义a:666
function cg(){
a = 888;
console.log("函数内var定义a:" + a);// 函数内var定义a:888
}
cg();
console.log("函数调用后var定义a为函数内部修改值:" + a);
// 函数调用后var定义a为函数内部修改值:888
(5)可以重复定义,后面的值会覆盖前面的。
var a = 1;
var a = 2;
console.log(a); // 2
2. let
(1)let是块级作用域,函数内部使用let定义后,对函数外部无影响。
let a = 666;
console.log("函数外let 定义a:" + a); // 函数外let 定义a:666
function cg(){
let a = 888;
console.log("函数内let 定义a:" + a);// 函数内let 定义a:888
}
cg();
console.log("函数调用后let 定义a为函数内部修改值:" + a);
// 函数调用后let定义a为函数内部修改值:666
(2)不存在变量声明提前,否则会报错。
console.log(a);
let a = 1;
评论10