# 数据类型

# 基本类型

  • String
  • Number(NaN是数字类型,可以用Number.isNaN检测)
  • Boolean
  • undefined
  • null
  • Symbol
  • Bigint(在数字后加n)

Symbol和Bigint新加的,用typeof检测会显示'symbol''bigint'

# 引用类型

  • Object
  • Function

let func = new Function ([arg1[, arg2[, ...g1N],] functionBody) 换句话说,函数的参数(或更确切地说,各参数的名称)首先出现,而函数体在最后。所有参数都写成字符串形式。通过查看示例,可以更容易理解。这是一个有两个参数的函数: let sum = new Function('a', 'b', 'returna + b'); alert( sum(1,2)); // 3

但是一般不这么写,只是想记录还有这一种定义函数的方法

  • Array

# 判断值的类型

  1. typeof:

不能判断null与object以及object与array

'object','boolean','number','string','null','undefined','symbol','bigint','function'
  1. instanceof 判断具体类型

  2. ===:

可以判断undefined, null

# 相关问题

  1. undefined和null的区别
    • undefined表示定义了未赋值,即undefined表示"缺少值",就是此处应该有一个值
    • null表示定义并赋值了,只是值为null,即null表示"没有对象",即该处不应该有值
    • JavaScript的最初版本是这样区分的:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN

等于undefined的情况:

  1. 变量被声明了,但没有赋值时,就等于undefined

  2. 调用函数时,应该提供的参数没有提供,该参数等于undefined

  3. 对象没有赋值的属性,该属性的值为undefined

  4. 函数没有返回值时,默认返回undefined。

等于null的情况:

  1. 作为函数的参数,表示该函数的参数不是对象

  2. 作为对象原型链的终点

  1. 什么时候赋值为null
    • 初始赋值,表明将要赋值为对象
    • 结束前,让对象成为垃圾对象(被垃圾回收器回收)