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中的保留字,尽管它有特殊的意义,并且是唯一的方法确定变量是否未定义。因此:
alert(someVar == undefined); //显示 true
目前为止,一切看上去风平浪静,正常无比,但下面情况则发生了变化:
var someVar;
alert(someVar == undefined); //显示 false!
这就是为什么jQuery源码中最外部的闭包函数要有个并没有传入的undefined参数,目的就是保护undefined不要被外部的些不良乘虚而入。