本博客参考:
1.菜鸟教程 - 学的不仅是技术,更是梦想!(关于关键字let和const)
2. 四菜一汤~的博客(关于JavaScript中变量的声明)
3. 顺其自然~的博客(关于js中变量的命名规则)
4. 菜鸟教程 - 学的不仅是技术,更是梦想!(关于JavaScript 声明提升)
5. Netwrok_Nova的博客(JavaScript中的let是什么)
6. 《HTML5+CSS3+JavaScript网页设计案例课堂(第2版)》(关于变量)
用于存储信息的单元,对应于某一个内存单元
创建变量名称时,应该遵守以下规则
声明一个变量,就是使用关键字对一个变量进行命名
声明格式
//只声明单个变量
var 变量名;
// 声明一个变量并对其命名
var 变量名="值";
// 同时声明多个变量
var 变量名1,变量名2,...;
// 同时声明多个变量并赋值
var 变量名1="值1",
变量名2="值2",
...;
function test1(){
ss="这是一个全局变量";
return ss;
}
console.log(ss);
//输出 “这是一个全局变量”
虽然js是一种弱类型的程序设计语言,变量可不声明直接使用,但是大量的全局变量使得程序的可维护性变得很低
function test1(){
console.log(ss);//输出:undefined
var ss=9;
}
for(var ss=0;ss<11;ss++){
;// 此处表示空语句
}
console.log(ss);
//此处将会输出 11
上面的问题其实并不大,而且很容易解决,我们只需要每个作用域开始前声明这些变量即可,这也是正常的 JavaScript 解析步骤,易于我们理解。
ES6引入了一种新的作用域–块作用域
其中使用let关键字声明的变量只在某一代码块中有效,有效解决了上面使用var关键字声明变量造成的许多问题
let ss=1;
console.log(ss);// 输出1
{let ss=2;
console.log(ss);//输出2
}
function test1(){
for(var ss=0;ss<11;ss++){;}
console.log(ss);
}
test1();// 输出11
console.log(ss);// 报错:Uncaught ReferenceError: ss is not defined
let ss=1;
除此之外,使用let关键字还具有以下特点
let carName = "奥迪";
// 不能使用 window.carName 访问变量
let ss=1;
let ss; // 报错:Uncaught SyntaxError: Identifier 'ss' has already been declared
使用格式
const 常量名=值;
使用const关键字的注意事项
// 定义一个数组
const arr1=[1,2,3];
//修改数组的第二个元素
arr1[1]=99;
//定义一个对象
const person = {name:"小明",age:"12"};
//对对象的属性进行修改
person.age="13";
变量的作用域,就是可以访问该变量的代码区域
在 ES6 之前,JavaScript 只有两种变量(两种作用域): 全局变量 与 函数内的局部变量。
具有全局作用域,网页中所有脚本和函数均可使用
具有局部作用域,只作用于函数内,所以不同的函数可以使用相同名称的变量。在函数开始执行时创建,函数执行完后局部变量会自动销毁。
Es6增加了另一种作用域:块级作用域,它规定每一个{}为一个“块”(如定义函数使用的大括号、for所使用的的大括号等等),使用let、const声明变量\常量时,这些标识符的作用域仅仅在该大括号内