ECMAScript之变量概括重点小解

置顶文章:《纯CSS打造银色MacBook Air(完整版)》

上一篇:《XML和HTML重点小解》

作者主页:myvin
博主QQ:851399101(点击QQ和博主发起临时会话)

写在前面

接着上一篇盗“书”笔记——JavaScript Notes(一)聊。

文档模式

在HTML中文档模式有三种:

  • 混杂模式(quirks mode),也有叫怪异模式的
  • 标准模式(standards mode)
  • 准标准模式(almost standards mode)

在ecmascript 5中引入了严格模式(strict mode)的概念,ecmascript3中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。

在脚本中启用严格模式时,可以在顶部添加代码"use strict"即可,比如下面的例子:

function doSome(){
    "use strict";
    //somecode
}

"use strict"看起来像是一段字符串,但它其实是一条编译指示,解析器会根据严格模式来解析。

ecmascript中的变量

ecmascript中的变量是松散型变量,变量仅仅是一个来保存值的一个占位符而已。

Tip:使用var操作符定义的变量讲成为定义该变量的作用域中的局部变量,就是说,如果在函数中使用var来定义变量,那么在函数退出后该变量就会被销毁。
Tip:不加var的就是全局变量,无论该变量是在程序中的什么位置中,包括函数体内。

数据类型的检测

数据类型的检测可以使用typeof操作符,语法是typeof valuetypeof(value),因为typeof是操作符,并不是方法,所以typeof后面的括号可以加也可以不加。

typeof在检测基本类型的时候的确是个不错的选择,即数字、字符串、布尔值、undefined,但是在检测对象的时候并不是一个好的选择,因为我们在检测对象的数据类型的时候,往往是想知道该对象详细是一个什么样的对象。所以,在检测对象的时候我们常常应用instanceof,语法是value instanceof Array,即,该value是否为Array类型。

所以,

在检测基本类型的时候使用typeof,在检测引用类型的时候使用instanceof

但是,在我们使用instanceof检测数组的时候也会出现问题:

网页中包含多个框架的时候,即有多个全局环境变量的时候,instanceoffalse。对于这种情况,ecmascript5中引入了一个新的方法:Array.isArray()方法。该方法的语法为:Array.isArray(value),这样无论是否存在多个全局环境变量,都都正确判断数组。

关于instanceofArray.isArray我们后续还会谈到。

null和undefined

使用typeofnullundefined进行数据检测,typeof null结果为Objecttypeof undefined结果为undefined

实际上,undefined是派生自null的,所以在edma-262中对它们的相等性测试返回true,即

console.log(null==undefined)

返回true

尽管nullundefined有相等的关系,但是用途并不完全相同,关于两者的讲解,可以参考博主的这一篇文章JavaScript“并非”一切皆对象,在这里博主简单地再说几句。

不管在什么情况下,都没有必要显式地将一个变量设置为undefined,因为即便对于一个只有声明没有初始化的变量也是返回undefined,但是对于null并不是这样的。如果我们设置的变量是用来存放对象的,即使暂时还没有用,我们也应该将该变量设置为null,这样既可以体现null作为空对象的惯例,也有助于区分nullundefined

Boolean

任何值都可以转换为布尔值,转换规则如下:

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零数字值(包括正负Infinite) 0和NaN
Object 任何对象(空对象Null除外) Null
Undefined 不适用 undefined

这些转换规则并不难理解,并且也有必要记一下。


转载请记得说明作者和出处哦-.-
作者:myvin
原文出处:http://www.cnblogs.com/myvin/p/4749111.html

下一篇:《ECMAScript之Number和String类型重点小解》

置顶文章:《纯CSS打造银色MacBook Air(完整版)》

你可能感兴趣的:(ECMAScript之变量概括重点小解)