弱类型特性
我们知道在js中定义变量的时候无需指定类型,比如说指定一个变量num,赋值为32
var num=32;
稍后也可以马上将一个字符串复制给这个变量
num='this is a string';
这样也是合法的。
有的人可能认为,oh my god,js好简单,定义变量时,连类型都不用管。
真的是这样的吗? 带着这样的疑问,我们来看一下下面这个例子:
32+32 // 64
32+32的运算结果,当然是64
稍微做一点修改,把左边的32用双引号引起来表示一个字符串:
'32'+32 // 3232
这次的运行,会理解为字符串的拼接,运行结果就是3232
同样是字符串与数字运算,稍微做些改变,将+号变成-号;
'32'-32 // 0
这次又会理解为数字的运算,结果时0
我们看到,JavaScript虽然说不需要指定数据类型,但是就是因为没有显示的指定变量的类型,反而在一些js的操作符,运算符,进行一些运算的时候,背后有着一套复杂的隐式转换逻辑。
JavaScript常见的数据类型
我们把一些常见的、比较基础简单的类型称之为:原始类型,主要有
number
string
boolean
null
undefined
这5种
除了这5种原始类型呢,剩下的呢就只有一种,叫做对象类型 object。
(此处先暂时忽略es6引入的新的原始数据类型Symbol)。
可能有的朋友会问,咦? 函数啊、数组啊哪去了?
在JavaScript中, Function,Array,Date,... 等也是对象,尤其是函数呢是一种比较特殊的对象,因为我们知道函数是可以调用的,并且有它自己的作用域等一些相关内容。
网友评论