当声明一个变量后并未赋值,此时该变量的值为undefined。 变量在重新声明后并不会覆盖之前的值内容。
JS的数据类型包括:String, Number, Boolean, Array, Object, Null和Undefined。
Undefined和Null 变量值未赋值时为 undefined ,变量可以通过null设置为空值(empty)
通过数字的toString()方法可以将数字转化为16进制,8进制或2进制。
var myNumber = 128;
myNumber.toString(16);
myNumber.toString(8);
myNumber.toString(2);
数字中的Infinity表示数字溢出,除零时的结果也是Infinity。
delete操作符用于删除对象的属性,它对变量和方法不起作用。
var person = {
firstName: "Kevin",
lastName: "Lee",
age: 35,
eyeColor: "black"
};
delete person.age;
console.log("%o", person); // 此处通过%o可以在console中显示person对象内容
- string
- number
- boolean
- object
- function
- Object
- Date
- Array
- null
- undefined
constructor 属性返回所有JavaScript变量的构造函数定义。
- try 用来测试语句中是否出现错误
- catch 用来处理错误
- throw 用来创建自定义错误
- finally 在 try 和 catch 后执行,无论他们处理结果如何,finally 语句始终会被执行.
try {
Block of code to try
} catch (err) {
Block of code to handle errors
} finally {
Block of code to be executed regardless of the try / catch result
}
- String
- Number
- Boolean
- Object
在JavaScript中我们主要通过字符串的search()和replace()方法使用正则表达式。
- search() 方法查找匹配的字符序列并返回匹配字符序列的位置。
- replace() 方法在字符串中替换匹配的字符序列。
使用 test() 方法
var patt = /e/;
patt.test("The best things in life are free!");
使用 exec() 方法
/e/.exec("The best things in life are free!");
Hoisting 是JS的默认行为,它将所有声明语句提升当前作用范围(scope)的最前端(当前脚本或当前方法)。
对于JS中的初始化并不会提升,也就是说在提升变量声明的同时并不执行初始化操作。
我们在编写程序时尽量不要采用JS提升特性,因为这种习惯很容易产生bug,尽可能在顶端声明你的变量。
避免使用全局变量,无论该变量为任何类型、对象或函数方法。
- 使用 {} 而不是 new Object()
- 使用 "" 而不是 new String()
- 使用 0 而不是 new Number()
- 使用 false 而不是 new Boolean()
- 使用 [] 而不是 new Array()
- 使用 /(:)/ 而不是 new RegExp()
- 使用 function (){} 而不是 new function()
使用 == 进行比较前会将变量进行类型转换,=== 在比较时将同时对值和类型进行比较。
0 == ""; // true
1 == "1"; // true
1 == true; // true
0 === ""; // false
1 === "1"; // false
1 === true; // false
eval函数会将参数中的字符串作为代码来执行。因此从安全角度考虑我们应尽量不使用它。
HTML DOM模型构建出树形对象。