JavaScriptの类型

前言

此篇小结来源与《你不知道的JavaScript》和《JavaScript高级程序设计》的结合??或许是的,龟速总结中...

七种内置类型

  1. null
  2. undefined
  3. boolean
  4. number
  5. string
  6. object
  7. symbol

除了object,其他都成为基本类型
变量没有类型,值才有。
typeof总返回一个字符串。

null

类型检测
因为typeof检测null的结果为object,所以在判断的时候需要这样判断:

var a = null;
(!a && typeof null === "object"); //true

undefined

类型检测

typeof undefined === "undefined"; //true

变量未持有值是undefined,但并不是未声明,不过下面结果都是undefined:

var a;
typeof a;  //"undefined"
typeof b;  //"undefined"

安全防范
防止出现直接抛出未声明的错误,不能直接用if(变量)的方法来判断变量是不是存在,可以用以下两种方法:

if(typeof DEGUB  !== "undefined") {}
if(window.DEBUG) {}

boolean

类型检测

typeof true === "boolean"; //true

number

类型检测

typeof 42 === "number"; //true

JS并没有真正意义上的整数,使用双精度格式(64位),42.0等同于42。

数字表示

  1. 默认十进制表示,小数最后的0被省略。
  2. 特别大和特别小的用指数显示,与用toExponential()结果相同。
  3. 数字前面的0可省略。
  4. 小数点后小数最后的0也可以省略。
  5. 调用Number.prototype的方法:toFixed()显示小数位数。
  6. 调用Number.prototype的方法:toPrecision()指定有效数位的显示位数。

注意:运算符会优先认为是有效数字字符

42.toFixed(3); //SynataxError
(42).toFiex(3); //42.000
0.42.toFixed(3); //0.420
42..toFixed(3); //0.420
42 .toFixed(3); //42.000

string

类型检测

typeof "42" === "string"; //true

字符串和字符串数组

  1. 都是类数组,有length属性,有indexOf()和concat()方法。

  2. 字符串不可变(创建返回新值),数组可变,但a[i]在老版本IE中不允许,正确用a.CharAt(i)。

  3. 字符串可以借用方法处理,如:Arrray.prototype.join.call(a,'-');

  4. 数组有reverse()方法,字符串没有。可以用以下方法(对复杂字符如Unicode、星号不适用):

    var c=a.split().reverse().join('');

object

函数

类型检测
function是object的子类型,其length属性为参数个数,但是typeof判断结果有function:

type of function a(){} === "function"; //true

数组

类型检测
数组也是object的子类型

type of [1,2,3] === "object"; //true

类数组转换
1.slice()常用于把类数组转换为数组:

Array.prototype.slice.call(arguments);

2.ES6中的Array.from(arguments)实现相同作用。

注意点
delete可以把元素删除,但length并不会发生变化。

symbol

类型检测

typeof Symbol() === "symbol"; //true
posted @ 2022-11-13 18:13  章鱼小年糕  阅读(15)  评论(0编辑  收藏  举报