目录
1、语法
区分大小写
标识符:变量、函数、属性或函数参数的名称
- 第一个字母必须是一个字母、下划线(_)或美元符号($)
- 剩下的其他字符可以是字母、下划线、美元符号或数字
- 使用驼峰大小写形式:即第一个单词的首字母小写,后面每个单词的首字母大写
严格模式:"use strict"
2、关键字和保留字
不能用作标识符和属性名
3、变量
ECMAScript的变量是松散类型,可以用于保存任何类型的数据
var(es5)、let(es6)和const(es6)的区别:
- var 存在变量提升,可以重复声明
- let和const 不存在变量提升(未声明前无法使用)
- let和const 不能重复声明
- let和const 有着严格的作用域名
- let 不可以重复声明,但是可以重复赋值
- const声明常量,一旦声明不可改变,但是声明对象时可以给对象添加属性
4、数据类型
- 简单数据类型:Number、String、Null、Undefined、Boolean、Symbol
- 复杂数据类型:Object
5、确定变量的数据类型
typeof操作符
注:逻辑上讲,null值表示一个空对象指针,这也是给typeof传一个null会返回object的原因
6、转型函数
- Boolean()
- Number()
- parseInt()、parseFloat()、isNaN()
- toString() // null和undefined没有该方法,仍返回null和undefined
7、模板字符串
- 可以保留换行字符,跨行定义字符串
- 可以定义HTML模板
- 会保持反引号内部的空格
- 字符串插值通过在${}中使用一个JavaScript表达式实现
let value1 = '小逼崽子';
let value2 = '我是你爹';
let value3 = '就问你服不服';
// 传统字符串拼接
let add1 = value1 + ',' + value2 + ',' + value3 + '?';
console.log(add1); // 小逼崽子,我是你爹,就问你服不服?
// 模板字符串
let add2 = `${value1},${value2},${value3}?`;
console.log(add2); // 小逼崽子,我是你爹,就问你服不服?
8、每个Object实例都有如下的属性和方法
- constructor:用于创建当前对象的函数
- hasOwnProperty(propertyName):用于判断当前对象实例(不是原型)上是否存在给定的属性
- isPrototypeof(object):用于判断当前对象是否为另一个对象的原型
- propertyIsEnumerable(propertyName):用于判断给定的属性是否可以使用
- toLocalString():返回对象的字符串表示
- toString():返回对象的字符串表示
- valueOf():返回对象对应的字符串、数值或布尔值表示。通常与toString()返回的结果相同
9、操作符
一元操作符:只操作一个值的操作符叫一元操作符
- 递增递减操作符:++、--
- 前置递增或递减:变量的值会在语句被求值之前改变
- 后置递增或递减:变量的值会在语句被求值之后改变
- 一元加和减:+、-
- 一元加由一个+表示:放在变量前面,对数值没有任何影响;如果将一元加应用到非数值,则会执行与使用Number()转型函数一样的类型转换。
- 一元减由一个-表示:放在变量前面,主要用于把数值变成负值;同样也可以用于数据类型转换
位操作符:
按位非:~、按位与:&、按位或:|、按位异或:^、左移:<<、有符号右移:>>、无符号右移:>>>
布尔操作符:
- 逻辑非:!
- 始终返回布尔值,无论应用到的是什么数据类型;
- 首先将操作数转换为布尔值,然后再对其取反
- 逻辑与:&&
- 短路操作符;
- 可以用于任何类型的操作数,不限于布尔值。
- 如果有操作数不是布尔值,则逻辑与并不一定会返回布尔值
- 逻辑或:||
- 短路操作符;
- 与逻辑与类似,如果有一个操作数不是布尔值则不一定返回布尔值
乘性操作符:
- 乘法操作符:*
- 用于计算两个数值的乘积,如果有不是数值的操作数,则先在后台用Number()将其转换成数值
- 除法操作符:/
- 用于计算第一个操作数除以第二个操作数
- 取模操作数:%
- 用于计算两个操作符的常规除法,返回余数
指数操作符:** (等同于Math.pow())
指数赋值操作符:**=
加性的操作符:
- 加法操作符:+
- 用于求两个数的和;如果存在字符串,则都转换成字符串并用+拼接
- 减法操作符:-
- 同加法操作符一样使用
关系操作符:<、>、<=、>=
相等操作符:
- 等于(==)和不等于(!=)
- 全等(===)和不全等(!==)
注意:null == undefined 是true,但是null === undefined 是false。
条件操作符(三目运算符):a = 5? true : false;
赋值操作符:
- 简单赋值:=
- 乘后赋值:*=
- 除后赋值:/=
- 取模后赋值:%=
- 加后赋值:+=
- 减后赋值:-=
- 左移后赋值:<<=
- 右移后赋值:>>=
- 无符号右移后赋值:>>>=
逗号操作符:用来在一条语句中执行多个操作
10、语句
- if语句
- do-while语句:循环体内的代码至少执行1次
- while语句:循环体内的代码有可能不执行
- for-in语句:用于枚举对象中的非符号键属性
- for-of语句:用于遍历可迭代对象的元素
- 标签语句
- break和continue语句:break语句用于立即退出循环,强制执行循环后的下一句语句;continue语句也是立即退出循环,但再次从循环顶部开始执行。
- switch语句
- return语句:函数体内只要碰到return语句,函数会立即停止执行并退出,return后面的代码不会执行