Js
关键字
null non-value 表示一个空值
NaN Not a Number 不存在数值形式 isNaN()
Infinity 正无穷 isFinite()
undefined 未初始化的值
布尔类型
false、0、空字符串(”“)、NaN、null 和 undefined 被转换为 false
所有其他值被转换为 true
可以使用 Boolean() 函数进行显式转换
变量
let 语句声明一个块级作用域的本地变量
const 允许声明一个不可变的常量,这个常量在定义域内总是可见的
var 在它所声明的整个函数都是可见的
如果声明了一个变量却没有对其赋值,那么这个变量的类型就是 undefined
for
for…of let value of array
for…in let property in object
switch
switch 的表达式和 case 的表达式是使用 === 严格相等运算符进行比较的
String
| 方法名称 | 描述 | | ————————————————– | ————————————————————————————————- | | a.toString() | 返回一个包含数组中所有元素的字符串,每个元素通过逗号分隔 | | a.toLocaleString() | 根据宿主环境的区域设置,返回一个包含数组中所有元素的字符串,每个元素通过逗号分隔 | | a.concat(item1[, item2[, …[, itemN]]]) | 返回一个数组,这个数组包含原先 a 和 item1、item2、……、itemN 中的所有元素 | | a.join(sep) | 返回一个包含数组中所有元素的字符串,每个元素通过指定的 sep 分隔 | | a.pop() | 删除并返回数组中的最后一个元素 | | a.push(item1, …, itemN) | 将 item1、item2、……、itemN 追加至数组 a | | a.reverse() | 数组逆序(会更改原数组 a) | | a.shift() | 删除并返回数组中第一个元素 | | a.slice(start, end) | 返回子数组,以 a[start] 开头,以 a[end] 前一个元素结尾 | | a.sort([cmpfn]) | 依据可选的比较函数 cmpfn 进行排序,如果未指定比较函数,则按字符顺序比较(即使被比较元素是数字)。 | | a.splice(start, delcount[, item1[, …[, itemN]]]) | 从 start 开始,删除 delcount 个元素,然后插入所有的 item。 | | a.unshift(item1[, item2[, …[, itemN]]]) | 将 item 插入数组头部,返回数组新长度(考虑 undefined)。 |
自定义对象
function makePerson(first, last) {
return {
first: first,
last: last,
fullName: function() {
return this.first + ' ' + this.last;
},
this.fullNameReversed = function() {
return this.last + ', ' + this.first;
}
}
s = makePerson("Simon", "Willison");
s.fullName(); // Simon Willison
s.fullNameReversed(); // Willison, Simon
function Person(first, last) {
this.first = first;
this.last = last;
}
Person.prototype.fullName = function() {
return this.first + ' ' + this.last;
}
Person.prototype.fullNameReversed = function() {
return this.last + ', ' + this.first;
}
剩余参数
包含了剩下的参数,返回数组/undefined
function(a, b, ...theArgs) {
// ...
}
内部函数
减少全局作用域下的函数的数量,有利于编写易于维护的代码
function parentFunc() {
var a = 1;
function nestedFunc() {
var b = 4; // parentFunc 无法访问 b
return a + b;
}
return nestedFunc(); // 5
}