数据类型

基本数据类型

存在栈内存

  1. null
  2. undefined
  3. Symbol
  4. Number
  5. String
  6. Boolean
  7. BigInt

    引用数据类型

    存在堆内存 所以引用类型值都为地址引用

  8. Object

  9. Function

    null & undefined

    nullundefined的区别?
    null 表示空值 即声明变量定义为空
    undefined 表示 未赋值的自然状态或 缺少值 此处本应该有值单未赋值

最好用 void 0 代替 undefined
typeof null ===
object

String

javascript的字符串是无法变更的
一旦字符串构造出来无法用任何方式改变字符串的内容,所以字符串具有值类型的特征。

Number

  1. console.log( 0.1 + 0.2 != 0.3); /**浮点精度丢失*/

Object

对象的字面量方式和new的区别

除了null & undefined 都可以使用new 操作符 Symbol有new 操作符但无法使用

本质上 new操作使用valueOf就是字面量
字面量更简便 性能更好 因为减少了原型链查询过程

  1. new Boolean();
  2. new String();
  3. new Array();
  4. new Date();
  5. new Object();
  6. new Number();
  7. new RegExp();
  8. new Function();

new Function

new Function ([arg1[, arg2[, ...argN]],] functionBody)
Function 构造函数创建一个新的 Function 对象

接收参数和字符串函数 在后端获取函数字符串调用很实用 注意的是 new Function 只会访问全局作用域

  1. /** 函数调用 */
  2. let sum = new Function('a', 'b', 'return a + b');
  3. alert( sum(1, 2) ); // 3
  4. /** 全局作用域 */
  5. var x = 10;
  6. function createFunction1() {
  7. var x = 20;
  8. return new Function('return x;'); // 这里的 x 指向最上面全局作用域内的 x
  9. }