js基础语法之变量
- js中区分大小写
- 标识符
就是变量、函数、属性或函数参数名称。首字母必须是字母、数字、下划线或美元符号($),剩下的字符可以是字母、数字、下划线、$或数字。 - 注释
//单行注释
/*
多行注释
*/
- 变量
1、var关键字
//变量名、属性名等标识符要避免 关键字、保留字(自行搜索了解)
//1、var 关键字 声明函数作用域的变量
var x = 123;
function A(){
//函数内定义省略var 可创建一个全局函数
a = 123;
}
A();
console.log(a);// 123
//var 的声明提升
function B(){
//使用变量在声明之前
console.log(b);//undefined
var b = 111;
}
B();
//上边写法等价于
function B(){
//变量在声明提升
var b;
console.log(b);//undefined
b = 111;
}
function B(){
var b = 111;
var b = 222;
var b = 333;
//多次申明会覆盖之前的
console.log(b);//333
}
2、let 声明
//let 声明的是块作用域变量
function C(){
//let声明迭代变量,JavaScript引擎后台会为每个迭代循环声明一个新的迭代变量
//适用于所有风格的for循环,如for-in、for-of
for(var i = 0; i < 5; i++){
console.log(i)//5 5 5 5 5
}
for(let b = 0; b < 5; b++){
console.log(b)//1 2 3 4 5
}
console.log(i);//5
console.log(b);//Uncaught ReferenceError: b is not defined
}
C();
//冗余声明报错
let a = 123;
let a = 111;//Uncaught SyntaxError: Identifier 'a' has already been declared
//暂时性死区 b不会被提升
console.log(b);
let b = 123;//Uncaught ReferenceError: b is not defined
/*let 与 var除了作用域、变量提升、重复声明 区别
var 在全局声明 变量会成为window对象的属性,而let不会
*/
3、const声明
//const 与let基本相同,唯一重要区别是声明变量时必须初始化变量,且修改时会报错
const a = 132;
a = 456;//Uncaught SyntaxError: Identifier 'a' has already been declared
//const声明的限制适用于指向的变量的引用。所以变量是对象时改变内部属性不违反规则
const obj = {name:'www',dsc:'这是个对象'}
obj.name = 'object';// ok
声明风格最佳实践
1、不使用var
2、const优先,let次之