一、标识符命名规则
- 标识符的组成有字母、数字、## 标题下划线、$、变量名不能以数字开头
- 标识符不能使用内置关键字 if,for,break,var,let,等等
- 标识符应使用驼峰命名形式-变量名组成的单词首字母大写
var messageAsBoolean = "HHO";
二、定义变量
1. 定义变量的方式
var message = "qqqq";
message = "qqqq"
let message = "qqqq";
const message = "aaaaa";
2. var 定义变量会自动提升到顶部作用域,let定义的变量不会提升至首行
function a()
{
console.log(a); // 不会报错,a作用域会自动提升至顶行,内容为 undefined
var a = "aaaaaa";
}
等同于:
function a()
{
var a;
console.log(a);
a = "aaaaaa";
}
3. let 和 var 声明的变量作用域
3.1 let 声明的变量的作用范围是块作用域
function fun()
{ //函数块作用域的开始
if(true){ //if语句块作用域的开始
} //if语句块作用域的结束
} //函数块作用域的结束
3.2 var 声明的变量作用域为函数作用域
function fun(){ //函数作用域的开始
} //函数作用域的结束
3.3 全局声明方式
/* 1. 不使用 let、var等修饰,直接定义的变量 */
message = "aaaaaaaa";
/* 2. 在全局变量区申请的变量 */
var message = "aaaaaa";
let message = "aaaaa";
/* 注: js 文件的开始部分,不在任何函数内 */
4. 条件声明
4.1. var 定义的变量会提升值函数的顶部,重复定义会被替换 */
function fun(){
var name = "lili";
if(true){
var name = "hho"; //不会报错,代码类似name = "hho";
console.log(name); //打印结果为hho
}
console.log(name); //打印结果为hho
}
4.2 let 定义的变量不会被提升至函数的顶部
function fun(){
let name = "lili";
if(true){
let name = "hho"; //新定义变量name
console.log(name); // 打印结果为hho
}
console.log(name); // 打印结果为lili
}
5. const 定义的变量
5.1. 定义的变量的属性和let相似,但是 const定义的变量值不可被修改
const name = "hho"; //只可使用,不可修改name变量的值
5.2 定义的变量的作用域为块作用域,和 let 相同
5.3 const 定义变量必须初始化
const name; // 报错