首页 > 代码库 > Javascript中容易被忽视的地方

Javascript中容易被忽视的地方


(1) alert(undefined==null);返回的结果是true


(2)Javascript中的类型

http://www.cnblogs.com/winter-cn/archive/2009/12/07/1618281.html


JavaScript中的类型

JavaScript标准中规定了9种类型:Undefined Null Boolean String Number Object Reference List Completion

其中,Reference List Completion三种类型仅供语言解析运行时使用,无法从程序中直接访问,这里就暂不做介绍。下面我们可以了解下这六种类型:

Undefined类型

Undefined类型只有一个值undefined,它是变量未被赋值时的值【这是常规的知识】,在JS中全局对象有一个undefined属性表示undefined,事实上undefined并非JavaScript的关键字,可以给全局的undefined属性赋值来改变它的值【接下来说可以修改undefined的属性值倒是第一次听说!!!】。

Null类型

Null类型也只有一个值null,但是JavaScript为它提供了一个关键字null来表示这个唯一的值。Null类型的语义是“一个空的对象引用”。

Boolean类型

Boolean有两种取值true和false

String类型

String类型的的正式解释是一个16位无符号整数类型的序列,它实际上用来表示以UTF-16编码的文本信息。

Number类型

JavaScript的Number共有18437736874454810627 (就是 264-253 +3)个值。JavaScript的Number以双精度浮点类型存储,除了9007199254740990表示NaN,它遵守IEEE 754(见附1)规定,占用64位8字节。

Object类型

JavaScript中最为复杂的类型就是Object,它是一系列属性的无序集合,Function是实现了私有属性[[call]]的Object,JavaScript的宿主也可以提供一些特别的对象。


讲到这里,我是理解的,也就是Javascript规定了几种类型,可下面,我就糊涂了


JavaScript使用者眼中的类型:

前面讲了JS标准中规定的类型,然而一个不能忽略的问题是JS标准是写给JS实现者看的,对JS使用者而言,类型并不一定要按照标准来定义,比如,因为JS在进行.运算的时候,会自动把非Object类型转换为与其对应的对象,所以"str".length其实和(new String("str")).length是等效的,从这个角度而言,认为二者属于同一类型也未尝不可。我们利用JS中的一些语言特性,可以进行运行时的类型判别,但是这些方法判断的结果各不相同,孰好孰坏还需要您自己决定。

typeof——看上去很官方

typeof是JS语言中的一个运算符,从它的字面来看,显然它是用来获取类型的,按JavaScript标准的规定,typeof获取变量类型名称的字符串表示,他可能得到的结果有6种:string、bool、number、undefined、object、function,而且JavaScript标准允许其实现者自定义一些对象的typeof值。

在JS标准中有这样一个描述列表:

技术分享


至此,我很不理解,之前规定的Javascript类型和typeof()之后得到类型,让我很费解,为什么要搞两套呢?

http://www.zgguan.com/zsfx/jsjc/6397.html


typeof 运算符
返回一个用来表示表达式的数据类型的字符串。

typeof[()expression[]] ;

expression 参数是需要查找类型信息的任意表达式。

说明
typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined."

typeof 语法中的圆括号是可选项







Javascript中容易被忽视的地方