下面是摘出的一段js代码:all = !!all;
for (key in this.extraParams) {
(all || !this.persistent[key]) && (delete this.extraParams[key]);
}这问这里面的!! || && 用法是什么意思!
for (key in this.extraParams) {
(all || !this.persistent[key]) && (delete this.extraParams[key]);
}这问这里面的!! || && 用法是什么意思!
解决方案 »
- 一段js的实现
- google浏览器解析xml
- gmail的上传功能用js是怎么实现的啊?
- 寻javascript高手指导,高回报
- showModelessDialog调出的窗口为什么在服务器端只执行一次Page_Load事件
- 如何获取Javascript标签中,所有的涵数名
- 有一段代码,在IE5上不能运行,在IE6可以运行,却都是JAVASCRIPT,大家来看看
- JSP页面打开窗口传参问题
- extjs 使用tabpanel加载进来一个页面,但是被加载的这个页面里的js不会执行怎么回事啊?
- 点击按钮一个select都内容移到另一个select里
- 浏览器及其交互性的对比
- div块始终在顶部且不被覆盖
!!false == false
var a = 123;
!!a == true;
这里应该作用是将all转换成boolean,,不过在JS里面完全没必要,引擎会自动将其装箱的这代码纯粹卖弄而已而||就是“或”了,如
var b = 123;
var c = a || b; // c被赋值为123,因为a未定义,所以引擎认为它为false
true || false == true
false || false == false&&就是“与”了
true && true == true
false && true == false
这个代码纯粹无聊。极差的可读性。。其实它意思是(all || !this.persistent[key])为true的时候执行(delete this.extraParams[key]);if (all || !this.persistent[key]){
delete this.extraParams[key];
}
!!是两个逻辑非。
当!的时候会强制把后面的变量转换成布尔值。
!!的作用只是强制转换成布尔值而已。
&&是逻辑与,根据就近原则&&的左侧成立的时候才会执行右边的语句
||是逻辑或,左侧的不成立的时候才会执行右边的语句,若左侧成立,则不继续执行。
例如:
window.a && alert("1&&");
window.a || alert("1||");
var a = true;
window.a && alert("2&&");
window.a || alert("2||");
对于!!运算符:
all = !!all;
这句话是将all转化为boolean类型,并且只有当初始all为1或true时,才返回true,否则都是false。
这样理解对吗?
!就是"非"运算符
其实一个!,就能会将其转换成boolean了
js很多运算符都有二义性,如"+",
+false, 其实就是将false转换成正数值型
具体的结果(all什么情况下为true或false)我测试后再贴上来,现在还没有测试环境,要等一下了