本文演示了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
程序设计有所帮助。