javascript 的 var xx=aa||bb; 赋值用法

本文介绍了JS中||运算符的用法,当变量值不是null或undefined时赋值给新变量,反之则赋默认值。还对比了&&、||和&、|运算符,包括性能上&&和||更优,&和|可逐位运算,且在JS和C#中用法有差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var el = null,t = T || ‘aa’,p = 5 || 0;

猛一看,没看懂,呵呵。

立即google下,才明白其意义,很好用。 在此记录下,

例如: var t = T || ‘aa’

当 T 的值不是null或undefined的时候, T的值会赋给t。反之则’aa’会赋给t

下面附上,google到的资料


JS的&&和&,||和|运算符两个不同点

1.性能上的比较

如果&&的第一个运算数是false,就不再考虑第二个运算数,直接返回false;如果||的第一个运算数是true,也不再考虑第二个运算数,直接返回true。&和|运算符却不是这样的,它们总是要比较两个运算数才得出结果,因而性能上&&和||会比&和|好。

由于&&和||可能不考虑第二个运算数,所以我们应尽量避免在它们右边使用具有副作用(赋值、递增、递减和函数调用)的表达式,除非非常清楚自己再做什么。

if((a == null) && (b++ >10)) stop(); //b++递增运算可能不被执行
if((b++ >10) && (a == null)) stop(); //保证b++递增运算都被执行

2.逐位运算

&和|除了可以进行"逻辑运算"[1]外,还可以进行逐位运算,而&&和||只能进行逻辑运算。

3.JS的&和|与C#的&和|

在JS中,&和|只是逐位运算符,而在C#中,&和|既是逻辑运算符,又是位运算,通过以下代码可以看出。

document.write(true & false); //JS,结果为0

document.write(1 & 0); //JS,结果为0
bool a = true & false; //C#,结果为false
int b = 1 & 0; //结果为0

注[1]:&和|本是逐位运算符,之所以可以进行"逻辑运算",是由于JS是无类型的语言、各数据类型可以自由转换这一特性决定的,当用&和|进行"逻辑运算"时,实际上true被转换成1,false被转换成0,再进行逐位运算。也正是由于&和|是逐位运算符,才出现了第一点中所说的,它们总是要比较两个运算数才得出结果,才导致性能会比&&和||低一些。

function initSqlzhuru() { var funMap={};//记录页面变动之前的所有元素原始onblur方法 var tmpMap = null;//以元素name为key存储onblur方法,存在当前页面原始onblur方法; var bi = BrowserInfo(); for(var fm=0;fm<document.forms.length;fm++) { tmpMap ={}; var theElements=document.forms[fm].elements; for(var i=0;i<theElements.length;i++) { var tName = theElements[i].tagName ; var tType =theElements[i].nodeType ; var tClass =theElements[i].className ; if((theElements[i].elementtype && theElements[i].elementtype.indexOf ("checkXss") !=-1) || (tName=="INPUT"&&tClass=="common") ){ var name =theElements[i].name; //若有原始onblur,则存入funArr,并放入temMap; if(theElements[i].onblur != null) { var tmp = (theElements[i].onblur+"").replace(/(\n)+| (\r\n)+/g, "") ; var oldFun = funMap[theElements[i].name];//通过name获取原始的onblur方法 var newFun = tmp.substring(tmp.indexOf("{")+1,tmp.indexOf ("}")); //防止原始onblur方法被覆盖 var addFun = typeof oldFun!="undefined" ? oldFun:newFun; //当第二次触发bindOnblurEvent()时,当前onblur方法为addOnblurFun()时,不保存(原始onblur为空) if(! (checkXss.toString() .replace (/(\n)+| (\r\n)+/g, "").indexOf (addFun) > 0)){ tmpMap[theElements[i].name] = addFun;}} var aa=function(name1){ var name2='a'+[i]; name2 = function(){ checkXss.call(theElements[i],name1);} if((bi.name == "IE" && bi.version < 9)) theElements[i].attachEvent('onblur',name2);} else{ theElements[i].addEventListener ('onblur', name2) ;} }aa (name); }}} funMap = tmpMap;} 给上述代码添加详细的注释,并解释相关方法
03-14
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值