城外的人想冲进去,城里的人想逃出来。
——— 钱钟书《围城》
城外的人想冲进去,城里的人想逃出来。
——— 钱钟书《围城》
以前在阅读《JavaScript 高级语言程序设计》中有提到“在 JavaScript 中,一切皆为对象”,当时并没有深入理解其真正的含义,现在想想其内含着很大的信息量,下面跟着我一步一步的揭开其神秘的面纱。
在 JavaScript 中通过 typeof 进行数据类型检测。
运行以下代码:
1 | console.log(typeof undefined); // undefined |
根据上面代码输出结果可知,除开基本类型
,typeof 输出的其它的都是 function 和 object,即引用类型
。
通过阅读前面几期的内容,我们已经知道了 JavaScript 中的数据类型以及其在运算时进行隐式转换过程。
本期我们将重点分析一下面试过程中常见的隐式类型转换的面试题。
请输出代码运行的结果并说明原理?
1 | console.log(1 + undefined); |
分析:通过加号运算符进行运算,存在两种情况,第一种是字符串与加号运算符组成字符串连接操作,第二种是非字符串与加号运算符组成算术运算操作(需要将对应项转换成 Number 类型后进行操作)
答案:
1 | console.log(1 + undefined); // NaN |
上一期中我们主要是了解了 JavaScript 中存在两大数据类型:基本类型
和引用类型
以及其存储的方式(堆和栈)。
本期我们将重点谈谈 JavaScript 数据类型转换过程出现的各种“奇葩”的问题。
在 JavaScript 中当运算符在运算时,如果两边数据不统一,CPU 就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算,这种无需程序员手动转换,而由编译器自动转换的方式就称为隐式转换。
在 JavaScript 中“一切皆是对象”,在我们具体了解隐式转换前先了解一下对象的两个方法:toString()
和valueOf()
。
toString() 方法返回一个表示该对象的字符串。
前端进阶系列本着“好好干前端”的心态,一步一个脚印认真练好前端的基本功,为在前端的发展道路上做好铺垫。
本周正式开始前端进阶的第 1 期,本周的主题是理解JavaScript数据类型
。
最新的 ECMAScript 标准定义了 7 种数据类型,主要分为两大类基本类型
和引用类型
。
基本类型
有时也被称为值类型
或原始类型
。其中包括 6 种数据类型,分别是:字符串类型(String)
、数字类型(Number)
、布尔类型(Boolean)
、对空类型(Null)
、未定义类型(Undefined)
、符号类型(Symbol)
。
JavaScript 的字符串类型用于表示文本数据。它是一组 16 位的无符号整数值的“元素”。在字符串中的每个元素占据了字符串的位置。第一个元素的索引为 0,下一个是索引 1,依此类推。字符串的长度是它的元素的数量。