数据类型
基本数据类型
存在栈内存
- null
- undefined
- Symbol
- Number
- String
- Boolean
-
引用数据类型
存在堆内存 所以引用类型值都为地址引用
Object
- Function
null & undefined
null和undefined的区别?null表示空值 即声明变量定义为空undefined表示 未赋值的自然状态或 缺少值 此处本应该有值单未赋值
最好用
void 0代替undefined
typeofnull===object
String
javascript的字符串是无法变更的
一旦字符串构造出来无法用任何方式改变字符串的内容,所以字符串具有值类型的特征。
Number
console.log( 0.1 + 0.2 != 0.3); /**浮点精度丢失*/
Object
对象的字面量方式和new的区别
除了null & undefined 都可以使用new 操作符 Symbol有new 操作符但无法使用
本质上 new操作使用valueOf就是字面量
字面量更简便 性能更好 因为减少了原型链查询过程
new Boolean();new String();new Array();new Date();new Object();new Number();new RegExp();new Function();
new Function
new Function ([arg1[, arg2[, ...argN]],] functionBody)Function 构造函数创建一个新的 Function 对象
接收参数和字符串函数 在后端获取函数字符串调用很实用 注意的是 new Function 只会访问全局作用域
/** 函数调用 */let sum = new Function('a', 'b', 'return a + b');alert( sum(1, 2) ); // 3/** 全局作用域 */var x = 10;function createFunction1() {var x = 20;return new Function('return x;'); // 这里的 x 指向最上面全局作用域内的 x}
