变量概述
1. 什么是变量
2. 如何声明变量
- 使用 var let const 三种关键字声明变量
⚠️ var 在ECMAScript的所有版本可以使用;
let 和 const 在ECMAScript6以后版本使用;
3. 定义/使用变量 (var 为例子 let const 用法一致)
var message ;
var message = "hello,word"
var
1. var 的重新赋值
var message = "hello,word";
console.log(message)
message = 100;
console.log(message)
⚠️ "hello,wore" ==》为字符串类型 ; 100 ==》为数组类型
message 首先为 字符串 后又重新赋值为 数组类型
虽然不推荐改变变量保存的类型,但是在ECMAScript中是有效的
2.var声明作用域
- 函数内部声明的变量成为 局部变量
- 函数内部或者函数外部不使用var关键字声明成为 全局变量
function text(){
value = "hi,web"
var message = "hello,word"
}
text()
console.log(value);
console.log(message);
⚠️全局变量会成为 window 对象属性
console.log(window.message ); // 可以获取变量值
3. 定义多个变量
var name = "张三",
age = 18,
found = false,
4. var声明提升
function foo(){
console.log(message);
var message = "hello,word"
}
foo()
function foo(){
var message;
console.log(message);
var message = "hello,word"
}
foo()
let
let声明
let 声明的范围是块作用域
块作用域表示 { } 内都表示块
let 声明特点
let age;
let age;
if(true){
let age
if(true){
let age
}
}
function foo(){
console.log(message);
let message = "hello,word"
}
foo()
let message = "hello,word"
const
const的行为与let基本相同,
唯一 一个重要的区别是用它声明变量时必须同时初始化变量,且尝试修改const声明的变量会导致运行时错误
const 特点
1. 不可以修改变量的值
const age = 36;
age = 26;
1.1 如果const引用的的是一个对象,则可以修改对象内部的值
const person = { name : "李四" }
person.name = "张三"
console.log(person);
总结
关键字 | 变量提升 | 块级作用域 | 重复声明同名变量 | 重新赋值 |
---|
var | √ | × | √ | √ |
let | × | √ | × | √ |
const | × | √ | × | × |