本文演示了Javascript中常用的技术,供大家参考,具体分析如下:

一、真和假布尔表达式

下列布尔表达式返回false:

无效的

未定义

空字符串

0号0

但小心以下,一切回到真实:

0'string 0

空数组{

是空对象

下面段落中的下面代码:

复制代码如下:(x)!= NULL){

您可以直接写入以下表单(只要x不为0,空字符串为false):

复制代码代码如下:(x){

如果要检查字符串是否为空或空:

复制代码如下:如果(y)!=零!=){

但这样会更好:

复制代码代码如下:如果(y){

注:有很多地方需要注意,例如:

布尔('0')=真

0!=真

0!= null

0 = }

0 = false

布尔(空)= false

无效的!=真

无效的!= false

布尔(未定义)= false

未定义!=真

未定义!= false

布尔({)} =真

真}!

{ = false

布尔({)} =真

{ }!=真

{ }!= false



二、条件(三元)经营者(:)

三元素运算符用于替换以下代码:


If (Val! = 0){
返回富();
{人}
返回条();
}




你可以写:

复制代码如下:返回;

它在生成HTML代码时也很有用:

复制代码代码如下;

三、和| |

两元布尔运算符短路,最后一项仅在必要时计算。

| | 被称为the'default'operator,因为它可以:


函数foo(opt_win){
VAR赢;
如果(opt_win){
赢得= opt_win;
{人}
窗口=;
}
…
}




您可以使用它简化上面的代码:


函数foo(opt_win){
VAR赢= opt_win窗口| |;
…
}



也可以是短代码。例如:


如果(节点){
如果(节点){
如果(节点){ { } }){
富(节点,子索引});
}
}
}




你可以像这样使用它:


如果(节点node.kids节点。孩子{指数}){
富(节点,子索引});
}




或:


VaR的孩子=节点node.kids节点。孩子{指数};
如果(小孩){
富(小子);
}




但那有点太过分了:

复制代码代码如下:结node.kids节点。孩子{指数} foo(节点。孩子{指数});



四。使用联接()创建字符串

它通常是这样使用的:


功能listhtml(项目){
html =;
对于(var i = 0;i < items.length;+ +我){
如果(i = 0){;
}
HTML = itemhtml(项目{我});
}
html;
返回HTML;
}




但是IE下速度很慢,你可以用下面的方法:


功能listhtml(项目){
var;
对于(var i = 0;i < items.length;+ +我){
html {我} = itemhtml(项目{我});
}
返回+ html.join(',')+;
}




你也可以使用数组作为字符串的构造函数,然后将其转换为字符串通过myarray.join(的)。但是,赋值操作要比数组推()快,因此尽可能使用赋值操作。

五。遍历节点列表

节点列表是通过向节点迭代器添加筛选器来实现的。这表明获取其属性(如长度)的时间复杂度是O(n),而O则需要遍历整个列表。


VaR的段落= document.getelementsbytagname_r('p');
对于(var i = 0;i < paragraphs.length;i++){
DoSomething(段落{我});
}




这样做比较好。


VaR的段落= document.getelementsbytagname_r('p');
对于(var i=0,段落;段落=段落{ };i ++){
DoSomething(款);
}




该方法适用于所有的集合和数组(只要数组不包含的falsy价值)。

在上面的例子中,子节点也可以穿越firstChild和nextSibling。


VaR parentNode = document.getelementbyidx_x('foo);
对于(VAR的孩子= parentnode.firstchild;儿童;儿童=孩子。nextSibling){
DoSomething(儿童);
}




希望本文能对大家的javascript程序设计有所帮助。