您的位置:首页 > Web前端 > javascript > 正文

javascript中需要注意的几个细节

更多 时间:2014-4-15 类别:Web前端 浏览量:542

javascript中需要注意的几个细节

javascript中需要注意的几个细节

一.JavaScript区分大小写

在JavaScript中对象,变量、函数都是区分大小写的

例如

1、Object表示对象,Arrary表示数组,而写成object,arrary的时候JavaScript就不会识别

2、function myfunction(){} 和 function myFunction(){}不同

 

二.单引号和双引号

在JavaScript中单引号和双引号没有特殊的区别,都可以用来创建字符串,但是一般情况下JavaScript使用单引号,而且单引号里面可以有双引号,双引号里面也可以有单引号;

例如


<input onclick="alert(" value="Test1" type="button" OK?);?=""> //错误

<input onclick="alert('OK');" value="Test2" type="button"> //错误

<input onclick="alert(" value="Test3" type="button" OK?);?=""> //正确

<input onclick="alert('OK');" value="Test4" type="button"> //正确

<input onclick='alert("OK");' value="Test5" type="button"> //正确
 

 

三、 Null是个对象

JavaScript众多类型中有个Null类型,它有个唯一的值null, 即它的字面量,定义为完全没有任何意义的值。其表现得像个对象,如下检测代码:

alert(typeof null); //弹出 'object'

尽管typeof值显示是"object",但null并不认为是一个对象实例。要知道,JavaScript中的值都是对象实例,每个数值都是Number对象,每个对象都是Object对象。因为null是没有值的,所以,很明显,null不是任何东西的实例。

因此,下面的值等于false

alert(null instanceof Object); //为 false

 

四、NaN是个数值

NaN本意是表示某个值不是数值,但是其本身却又是数值,且不等于其自身,很奇怪吧,看下面的代码:

alert(typeof NaN);         //弹出 'Number'
alert(NaN === NaN);  //为 false

实际上NaN不等于任何东西。要确认某玩意是不是NaN只能使用isNaN.

 

五、正则表达式:不只是match和replace

不少javascript工程师都是只通过match和replace和正则表达式打交道。但JavaScript所定义的正则表达式相关方法远不止这两个。

其中值得一提的是test(),其工作方式类似match(),但是返回值却不一样

test()返回的是布尔型,用来验证是否匹配,执行速度高于match()。

alert(/\w{3,}/.test('Hello')); //弹出 'true'

上面行代码用来验证字符串是否有三个以上普通字符,显然"hello"是符合要求的,所以弹出true。

 

六、函数可以执行其本身

(function() { alert('hello'); })(); //弹出 'hello'

这里的解析足够简单:声明一个函数,然后因为()解析立即执行它。你可能会奇怪为何要这么做(指直接屁股后面()调用),这看上去是有点自相矛盾的:函数包含的通常是我们想稍后执行的代码,而不是当下解析即执行的,否则,我们就没有必要把代码放在函数中。

另外一个执行函数自身(self-executing functions (SEFs))的不错使用是为在延迟代码中使用绑定变量值,例如事件的回调(callback),超时执行(timeouts)和间隔执行(intervals)。如下例子:

var someVar ='hello';
setTimeout(function() { alert(someVar); }, 1000);
var someVar ='goodbye';

 

七、未定义(undefined)可以被定义(defined)

我们以一个和风细雨的小古怪结束。听起来可能有点奇怪,undefined并不是JavaScript中的保留字,尽管它有特殊的意义,并且是唯一的方法确定变量是否未定义。因此:

  • var someVar;
    alert(someVar == undefined); //显示 true
  • 目前为止,一切看上去风平浪静,正常无比,但下面情况则发生了变化:

  • undefined ="I'm not undefined!";
    var someVar;
    alert(someVar == undefined); //显示 false!
  • 这就是为什么jQuery源码中最外部的闭包函数要有个并没有传入的undefined参数,目的就是保护undefined不要被外部的些不良乘虚而入。