JavaScript变量的定义关键字
程序员文章站
2022-04-04 21:15:49
...
变量
一.var关键字
var message;//定义了message变量,可用来保存任何值
1.var声明作用域
使用var操作符定义的变量会成为它的函数的局部变量。例如:
function test(){
var message="hi";//局部变量
}
test();
console.log(message);//出错
解析:message变量是函数内部使用var定义的。调用函数,会创建这个变量并给他赋值。调用之后变量就会被销毁。但是在函数内定义变量时省略var操作符,可以创建一个全局变量。
function test(){
message="hi";//全局变量
}
test();
console.log(message);//控制台输出"hi"
注意:虽然可通过省略var操作符定义全局变量,但不推荐这样。在严格模式下,如果像这样给未声明的变量赋值,会抛出ReferenceError。
定义多个变量:
var message="hi",
found=false,
age=29;
/*
在严格模式下这样会导致语法错误。
*/
2.var声明提升
function foo(){
console.log(age);
var age = 26'
}
foo();//输出undefined
/*
使用关键字声明的变量会自动提升到函数作用域顶部
*/
使用var反复声明同一个变量是不会报错的
var a=1;
var a=3;
var a=4;
二.let关键字
let和var作用差不多,但有着很重要的区别是,let声明的范围是块作用域,var声明的是函数作用域。
if(true){
var name='matt';
conlose.log(name);//输出matt
}
console.log(name);//matt;
if(true){
let age=26;
comsole.log(age);//26
}
console.log(age);//ReferebceError:age没有定义
let不能再同一个块作用域出现重复声明。会导致报错
let age;
let age;//SyntaxError;标识符age已经声明过了
1.let与var的另一个区别,let声明的变量不会再作用域提升
//name会被提升
console.log(name);//undefined
var name='matt';
//age不会被提升
console.log(age);//ReferenceError:age没有定义
let age=26;
2.全局说明,使用let在全局作用域中声明的变量不会成为window对象的属性(var变量则会)
var name='matt';
console.log((window.name);//'matt'
let age=20;
console.log(window.age);//undefined
3.在*域中不能声明两次
<script>
var name='zz';
let age='12';
console.log(name);//zz
console.log(age);//12
</script>
<script>
var name='ee';
let age=12;
console.log(name);//ee
console.log(age);//报错
/*
因为let的作用域是块,
所以不可能检查前面是否已经使用let声明过同名变量,
同时也就不可能在没有声明的情况下声明它
三const声明
const与let差不多相同,唯一的区别就是声明变量时必须同时初始化变量,且尝试修改const声明的变量会报错。
const age=36;
age=16;//报错TypeError:给常量赋值
const name='mt';
const name='mz';//SyntaxError,不允许重复定义
注意在一下实例中不报错:
const name='z';
console.log(name);//z
{
const name='x';
console.log(name);//x;
}
//let定义也是一样的
let a=2;
console.log(a);//2
{
let a=3;
console.log(a);//3
}
const作用域也是块。
不允许重复定义。
注意const声明限制只适用于它指向的变量的引用。假如引用的是一个对象,修改对象内部的属性并不会违反const的限制。
上一篇: 封装antd中的form表单
下一篇: PHP实现支付宝即时到账功能
推荐阅读
-
C语言定义结构体时注意成员变量的类型和声明顺序
-
require中使用绝对路径的有关问题:常量重定义,变量覆盖,重调用增加开销
-
php如何查看变量的定义顺序
-
JavaScript中全局变量、函数内变量以及常量表达式的效率测试_javascript技巧
-
JavaScript 模拟类机制及私有变量的方法及思路_javascript技巧
-
javascript 显示全局变量与隐式全局变量的区别
-
JavaEE基础day02 1.定义Java中的变量 四类八种 2.变量定义和使用的注意事项 3.数据类型的转换、强制数据类型转换4.算数运算符、比较运算符、逻辑运算符、赋值运算符、三元运算符
-
php的预定义变量
-
javascript定义类的三个方法是什么
-
JavaScript生成随机数的4种自定义函数分享_javascript技巧