- ECMAScript是一种语言标准,而JavaScript是网景公司对ECMAScript标准的一种实现。
- 过多的嵌套会大大增加代码的复杂度。通常把部分代码抽出来,作为函数来调用,这样可以减少代码的复杂度。
- JavaScript不区分整数和浮点数,统一用Number表示。
- 由于JavaScript这个设计缺陷,尽量不要使用
==
比较,最好使用===
比较。 - 唯一能判断
NaN
的方法是通过isNaN()
函数:isNaN(NaN); // true
- 注意浮点数的相等比较:
1 / 3 === (1 - 2 / 3); // false
浮点数在运算过程中会产生误差,因为计算机无法精确表示无限循环小数。要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:
Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
-
JavaScript的数组可以包括任意数据类型。例如:
[1, 2, 3.14, 'Hello', null, true];
-
启用strict模式的方法是在JavaScript代码的第一行写上:
'use strict';
如果一个变量没有通过
var
申明就被使用,那么该变量就自动被申明为全局变量,在strict模式下运行的JavaScript代码,强制通过var
申明变量,未使用var
申明变量就使用的,将导致运行错误。 -
字符串内部既包含
'
又包含",
可以用转义字符\
来标识,比如:'I\'m \"OK\"!';
-
以前,把多个字符串连接起来,可以用
+
号连接1
2
3
4
var
name =
"olive"
;
var
age= 26;
var
message=
'hello,my name is '
+name+
',I\'m '
+age+
' years old'
;
alert(message);
但要是有很多变量需要连接,用+
号就比较麻烦了。ES6新增了一种字符串(模板字符串【和多行字符串表示一样】)连接方式:
1 2 3 4 |
|
concat()
方法并没有修改当前Array
,而是返回了一个新的Array
。而push会修改当前数组。slice()
就是对应String的substring()
版本,它截取Array
的部分元素,然后返回一个新的Array;
splice()
方法是修改Array
的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素,改变数组本身。-
for ... of
循环和for ... in
循环有何区别?for ... in
循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array
数组实际上也是一个对象,它的每个元素的索引被视为一个属性。当我们手动给
Array
对象添加了额外的属性后,for ... in
循环将带来意想不到的意外效果:var a = ['A', 'B', 'C']; a.name = 'Hello'; for (var x in a) { console.log(x); // '0', '1', '2', 'name' }
for ... in
循环将把name
包括在内,但Array
的length
属性却不包括在内。for ... of
循环则完全修复了这些问题,它只循环集合本身的元素:var a = ['A', 'B', 'C']; a.name = 'Hello'; for (var x of a) { console.log(x); // 'A', 'B', 'C' }
- 6
- 7
- 8
- 9
- 9
- 0