关于javascript中||与&&在函数调用中的使用
2013-03-09 21:21
351 查看
“||”的使用:
在javascript以及许多语言中,||(逻辑或)运算符,作用是:对两个表达式取或运算result = expression1 || expression2
如果expression1与expression2中有一个为true时result就为true。
这里注意:“||”运算符与“|”运算符不同。||具有短路特性,即当expression1为true时,那么expression2将不会在被执行。
对此我们就可以借用这个特性,如下:
function a(){ this.b = this.b || "test"; } a();
我们可以看到,当函数第一次被调用时,因为this.b为null,所以就会执行第二个表达式,给b赋值为“test”。
这样我们利用这个特性就实现了对b进行初始化,对于这种用法有些时候会很好的解决一些全局变量泛滥的问题。
"&&"的使用:
在javascript以及许多语言中,&&(逻辑与)运算符,作用是:对两个表达式取与运算result = expression1 || expression2
当expression1与expression2都为为true时result才为true。
这里注意:“&&”运算符与“&”运算符不同。&&也是具有短路特性,即当expression1为false时,那么expression2将不会在被执行。
这样我们也可以利用这个特性来完成我们的一些工作,如下:
function a(cb){ cb && cb(); } cb = function(){ alert("cb"); }; a(); a(cb);
我们可以看到,a函数需要一个参数cb,cb为一个函数。当执行a();时。cb没有被传过去,那么cb就为null(false)了。从而cb();也就不会执行了。
当执行到a(cb)时,cb存在了所以为true,那么第二个表达式cb();就会执行。从而避免了错误的发生。如果在a函数中不使用&&运算,直接调用cb()
的话就会发生cb不是函数的错误。
希望对大家有帮助。
相关文章推荐
- javascript入门系列演示·函数的定义以及简单参数使用,调用函数
- error C3867: “A::fun1”: 函数调用缺少参数列表;请使用“&A::fun1”创建指向成员的指针
- 关于函数适配器less< Type>以及bind1st和bind2nd的使用
- 使用此参数设置的访问点: ->S7ONLINE 函数调用 SRMD_Set(..) 中出现错误
- Android在使用WebView时,通过Javascript调用JAVA函数
- 关于回调函数、共享内存的使用,以及进程间函数调用的讨论
- 关于javascript中变量是如何存储调用、以及函数的继承实现
- 在 Javascript 中使用内联代码与使用外部函数调用时的性能差别(IE/Firefox/Chrome)
- 源码-JavaScript&jQuery交互式前端开发-第3章-函数、方法与对象-使用字面量语法创建对象
- 在VC6.0中创建和使用静态链接库&amp;amp;&amp;amp;C如何调用C++ 成员函数
- 关于C++——理解C++默默编写并调用了哪些函数&&函数初始化式(初始化列表相关)
- static函数 函数调用缺少参数列表;请使用“&XXX”创建指向成员的指针;类的static成员函数
- “error C3867: “XXX”: 函数调用缺少参数列表;请使用“&XXX”创建指向成员的指针”的错误
- 关于javascript基于DWR调用java函数的传值问题
- 关于javascript无法使用XPath的函数功能的解决方法
- Effective JavaScript Item 13 使用即时调用的函数表达式(IIFE)来创建局部域
- 关于javascript事件触发多个函数的使用
- 源码-JavaScript&jQuery交互式前端开发-第3章-函数、方法与对象-使用构造函数语法创建对象
- “Caculate::writehtml”: 函数调用缺少参数列表;请使用“&Caculate::writehtml”创建指向成员的指针
- 关于c++使用sql语句调用 mysql数据库中带参函数的方法