JS基础(1)
######2018-7-17
### 一 JS的来源
第一个版本 ECMAScript 1 (简称 ES1) 1997
第二个版本 ECMAScript 2 (简称 ES2) 1998
第三个版本 ECMAScript 3 (简称 ES3) 1999
第四个版本 ECMAScript 4 (简称 ES4) ...
第五个版本 ECMAScript 5 (简称 ES5) 2009
第六个版本 ECMAScript 2015 (简称 ES6) 2015
第七个版本 ECMAScript 2016 (简称 ES7) 2016
第八个版本 ECMAScript 2017 (简称 ES8) 2017
###二 JS基础
/*
多行注释
多行注释
多行注释
多行注释
*/
// 语句
``` JS
var a = 1;
// 语句块(代码块)
if (true) {
var a = 1;
{
var v = 1;
}
}
```
#####标识符的取名规则
1. 严格区分大小(大小写不一样)
2. 由 _、$、数字、字母组成(不能以数字开头)
3. 不能使用关键字和保留字
1. 驼峰命名法 : phoneNumber
2. 蛇形命名法 : phone_number
###三 变量
(1)变量定义:可变化的量,用来储存数据的容器
变量的生命(创建变量)
1.声明未初始化
var num ; ( ES5)
let num ; (ES6)
2. 声明并初始化
var num = 10; “=” 赋值符,将“=”右边的数据赋值给“=”左边
let name = '张三';
3. 连续声明(直接赋值)
var a, b, c = 0;
let e, f = 3, g;
(2)变量声明的问题
1. 变量重名
如果是 var 声明的变量,后面的会覆盖前面的(程序不会报错)
var num = 1;
var num = 2;
console.log(num);
如果是 let 声明的变量,不允许重名(程序会报错)。
let num = 1;
let num = 2;(不允许重名)
console.log(num);
2. 遗漏声明
直接访问一个未声明的变量,程序会报错。
console.log(a);
对一个未声明的变量进行赋值,会默认在全局创建该变量。
a = 10;(不建议使用)
console.log(a);
3. 连续声明
let a = 1, b = 1, c = 1;
let a = b = c = 1;(不建议使用)
console.log(a, b, c);
###四 变量的作用域
变量作用域定义:是指变量有效的区域
全局作用域、局部作用域
在 ES5 中,针对 var 声明的变量,其局部作用域由函数划分。
在 ES6 中,针对 let 声明的变量,其局部作用域由大括号划分。
var a = 1;
let b = 2;
{
let d = 4;
console.log(d);
}
{
let d = 5;
console.log(d);
}
console.log(d);(
四、变量提升
一个未赋值的变量,它的默认值为 undefined。
var a = 1 ;
console.log(a);
a = 1;
变量提升:在代码正式执行之前,JS 引擎会先解析(只看不运行)所有的代码,
并找到通过 var 声明的变量,将“变量的声明”提升到当前作用域的头部。
function fn(){
var a;
console.log(a);
a = 1;
}
fn();
var 和 let 的区别:
1. 变量重名:在同一作用域中,var 允许重名,后面覆盖前面。而 let 不允许重名。
2. 作用域:var 的局部作用域通过函数划分,而let 的局部作作用域通过大括号划分。
3. 变量提升:var 存在变量提升,let 不存在变量提升。
function fn(){
var a = b = c = 10;
}
fn();
console.log(a);(只有a通过 var创建,b c 默认全局,所以这句会报错)
console.log(b); (结果输出10 )
console.log(c); (结果输出10 )
常量:不变的量(ES6)不可修改
const num = 1 ;
###五 数据类型