从firefox 与 Ie 鼠标事件区别分析javascript或运算符“||”
2008-10-13 14:48
711 查看
Mozilla与IE在事件模型上略有差异
<script language="JavaScript">
window.document.onmousedown = function(e){
e||(e=window.event);
var b = e.button||e.which;
if (b == 1) {
alert("Left Button");
}
}
</script>
等同于
<script language="JavaScript">
var ie = window.navigator.appVersion.indexOf('MSIE')==-1?false:true;
window.document.onmousedown = function(e){
var e = ie?window.event:e;
var b = ie?e.button:e.which;
if (b == 1) {
alert("Left Button");
}
}
</script>
此代码摘自:http://blog.csdn.net/laolaowhn/archive/2008/07/24/2706040.aspx
然而,上面代码用了 || 使代码更简短,同时,代码可读性就下降了许多。
那么,|| 到底是怎么实现的呢?
在其他语言里,
那么,我们来分析最上面的代码:
首先是 e||(e=window.event)我们来看下面的代码:
alert(null||123-123)
页面提示一个对话框显示 0
alert(123||123-123)
页面提示 : 123
在javascript中:
所有对象都被认为是 true。
字符串当且仅当为空时才被认为是 false。null和 undefined被认为是 false。
数字当且仅当为 0 时才是 false。
这个就解释了上面为什么会用e||(e=window.event)来代替 result?exp1:exp2 了。
我个人理解:
而是:
当
<script language="JavaScript">
window.document.onmousedown = function(e){
e||(e=window.event);
var b = e.button||e.which;
if (b == 1) {
alert("Left Button");
}
}
</script>
等同于
<script language="JavaScript">
var ie = window.navigator.appVersion.indexOf('MSIE')==-1?false:true;
window.document.onmousedown = function(e){
var e = ie?window.event:e;
var b = ie?e.button:e.which;
if (b == 1) {
alert("Left Button");
}
}
</script>
此代码摘自:http://blog.csdn.net/laolaowhn/archive/2008/07/24/2706040.aspx
然而,上面代码用了 || 使代码更简短,同时,代码可读性就下降了许多。
那么,|| 到底是怎么实现的呢?
在其他语言里,
result=expression1||expression2如果两个表达式中有一个或两个等于True,则result是True。下面的表举例说明了result是如何被决定的:
如果 expression1 是 | 且 expression2 是 | 则 result 是 |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
首先是 e||(e=window.event)我们来看下面的代码:
alert(null||123-123)
页面提示一个对话框显示 0
alert(123||123-123)
页面提示 : 123
在javascript中:
所有对象都被认为是 true。
字符串当且仅当为空时才被认为是 false。null和 undefined被认为是 false。
数字当且仅当为 0 时才是 false。
这个就解释了上面为什么会用e||(e=window.event)来代替 result?exp1:exp2 了。
我个人理解:
result=expression1||expression2并不是直接返回的true或false,
而是:
当
expression1为“true”返回
expression1 当expression1为“false”,而expression2为“true”时,返回expression2 当
expression1,
expression2
都为false时,返回后面的
expression2
【可以去测试:alert(undefined||null);】 这个规则也相当好记,因为javascript是很公平的啊,当全为true是返回第一个表达式,当全为false时,返回第二个表达式,如果只有一个是true,那么返回true表达式。 以上属个人理解。
相关文章推荐
- firefox 与 Ie 鼠标事件区别
- javascript事件处理在IE和FireFox中的区别
- javascript事件处理在IE和FireFox中的区别
- 支持IE和Firefox的鼠标滚轮事件JavaScript代码
- firefox与IE对javascript和CSS的区别
- IE和FireFox的Javascript的事件和事件处理总结
- js鼠标滚轮事件详解(全兼容ie、chrome、firefox)实现图片缩放
- Javascript 模拟点击事件(点击链接与html点击) 兼容IE/Firefox
- 我是菜鸟之--关于在Firefox与IE中捕捉回车事件的JavaScript方法
- JavaScript鼠标事件onmousedown,onmousemove,onmouseout,onmouseover,onmouseup的用法和区别详解
- javascript 移动鼠标得到单元格所在table表中的rowIndex位置[兼容ie,firefox] 原创
- Javascript与CSS在IE和Firefox中的误区及区别
- Javascript与CSS在IE和Firefox中的误区及区别
- firefox与IE对javascript和CSS的区别(浏览器兼容)
- Javascript与CSS在IE和Firefox中的误区及区别
- JavaScript 事件监听实例代码[兼容IE,firefox] 含注释
- 好好学一遍JavaScript 笔记(十)――IE跟DOM事件函数区别
- javascript;css;firefox;ie;区别
- firefox与ie 的javascript区别
- IE和Firefox中Javascript和CSS的区别(轉:http://blog.csdn.net/superbeck/archive/2008/10/16/3082550.aspx)