变量
2018-08-26 17:36 w**2 阅读(182) 评论(0) 编辑 收藏 举报1、变量: var、 let、 const
(1)Var:ES5之前
(2)let、const:ES6新增的
(3)const声明常量,不可变的量
eg1: const readline = require("readline-sync");
eg2:
const number = 1;
number = 2;
console.log(number);
//结果报错
eg3:
let number1 = 1, number2 = 2;
console.log(number1);
//结果为2
2、 变量的声明、赋值,叫做变量的初始化
let number1;
合并写法: let number1=1,number2 = 2;
3、 在 Js 中,任何的变量声明了,没有赋值,都是 undefined(未定义)
(一)var
1. 支持重复声明,没有赋值的重复声明,js 引擎会忽略声明
var number = 1;
var number = 2;
console.log(number);
//结果为2
var number = 1;
var number;
console.log(number);
//结果为1,没有报错
2. 遗漏声明(禁止)
number = 2; //遗漏声明的关键字
console.log(number);
3. 任意类型:变量的值可以是任意类型
var value1 = 2, value2 = "abc", value3 = "张三";
(二)let
1、 不允许重复声明
let a = 1;
let a = 2;
console.log(a);
//结果报错
let a = 1;
a = 2;
console.log(a);
//结果为2
2、var 和 let 之间的差别
(1)变量提升
console.log(a);
var a = 10;
//结果为undefined
可以约等于:
var a;
console.log(a);
a=10;
想象成2个阶段:
(1) 预解析,找到所有通过 var 声明的变量,提升 【变量的声明】 到代码顶部
(2) 按照代码运行
(【执行上下文】进栈压栈)
console.log(a); // a is not defined
let a = 10;
//结果报错
2. var 声明的变量不存在块级作用域(不受{}的控制)
Eg1:
let a = 10;
{
console.log(a);
}
console.log(a);
//结果10,10(全局变量)
Eg2:
{
let a =10;
console.log(a);
}
console.log(a);
//结果为10,报错