本文主要是介绍[JS]var、let与const比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
var
let
const
var
用来声明变量。
在函数外声明的变量作用域是全局变量,在函数内用var声明的变量是局部变量,在函数内不用var声明的变量是全局变量。
在块级作用域中用var声明的变量,在作用域外也能访问。
例
{var name = "张三";
}
console.log(name); // 输出:张三
例
var name = "张三";
{var name = "李四";console.log(name); // 输出:李四
}
console.log(name); // 输出:李四
例
var name = "张三";
{let name = "李四";console.log(name); // 输出:李四
}
console.log(name); // 输出:张三
例
var i = 0;
for (var i = 0 ; i < 5 ; i ++) {}
console.log(i); // 输出:5
例. 使用var关键字声明的全局作用域变量属于window对象
var name = "张三";
console.log(window.name); // 输出:张三
let
用来声明的变量,只在let命令所在的代码块内有效。
变量只在 let 命令所在的代码块 {} 内有效,在 {} 之外不能访问。
例
{let name = "张三";
}
console.log(typeof name); // 输出:string
console.log(name); // 输出:空字符串
例
let name = "张三";
{let name = "李四";console.log(name); // 输出:李四
}
console.log(name); // 输出:张三
例
let i = 0;
for (let i = 0 ; i < 5 ; i ++) {}
console.log(i); // 输出:0
例. 使用let关键字声明的全局作用域变量不属于window对象
let name = "张三";
console.log(window.name); // 输出:空字符串
const
用来声明一个只读的常量,声明时必须进行初始化,声明常量的值不能改变。
const定义常量与使用let定义的变量相似。
1、二者都是块级作用域。
2、都不能和它所在作用域内的其他变量或函数拥有相同的名称。
const与let有下两点区别。
1、const声明的常量必须初始化。
2、const定义常量的值不能通过再赋值修改,也不能再次声明。
const GR = 0.618;
GR = 0.5; // 报错:Assignment to constant variable.(对常量变量的赋值)
const并非真正的常量
const 定义的变量并非常量,并非不可变,它定义了一个常量引用一个值。使用 const 定义的对象或者数组,其实是可变的。
const person = {"name":"张三","age":"20"};
person.name = "李四";
person.age = "30";
console.log(person); // 输出:{name: "李四", age: "30"}person = {"name":"王五","age":"25"}; // 报错:Assignment to constant variable.
这篇关于[JS]var、let与const比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!