好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

void

void

void 运算符 对给定的表达式进行求值,然后返回 undefined。(MDN)

表达式前面如果带有 void 关键字,则表达式的结果就会被忽略,并将 undefined 作为结果。

从业务上来看,void 关键字并不常用。

1. 用于 调用 函数 表达式

当想让 一个 函数 立即实行的时候,需要让 JavaScript 将 一个 函数 识别为表达式,void 关键字就能起到这个作用。

  void   function  (  )   { 
   alert  (  '马上执行!冲冲冲!'  )  ; 
 }  (  )  ; 
 

但有局限性,如果需要 获取 到 函数 的返回值,就不能使用 void。

  var  num1  =   ; 
 var  num2  =   ; 

 var  result  =   void   function  ( number1 ,  number2 )   { 
   return   [ number1  +  number2 ,  number1  *  number2 ]  ; 
 }  ( num1 ,  num2 )  ; 

result .  forEach  (  function  ( res )   { 
  console .  log  ( res )  ; 
 }  )  ; 
 

如这个例子, 函数 返回了两数之和与两数之积的结果,但因为 void 关键字,实际 result 变量被赋值为 undefined ,导致程序无法正常执行。

2. 内联在 HTML 中,阻止 a 标签 的 默 认事件

<a> 标签 的 href 属性 ,可以用来执行 JavaScript 代码 。

通常可以这么写:

    < a   href   =  " javascript: void; "   >   跳转 !   </ a  >  
   < a   href   =  " javascript: void 0; "   >   跳转 !   </ a  >  
   < a   href   =  " javascript: void (0); "   >   跳转 !   </ a  >  
 

这三行 代码 的 效果 是一样的。

如果 <a> 标签 的 href 属性 是 javascript:表达式; ,则会执行表达式的 内容 ,并将 页面 的 内容 设置为表达式的结果,如果表达式的结果是 undefined,则什么都不做。

根据这个规则, void 就起到了作用,但其实不写表达式,依然能达到这个 效果 。

    < a   href   =  " javascript:; "   >   跳转 !   </ a  >  
 

这样的 效果 和上面使用 void 关键字的方式是等价的,这也是常用的方式。

但碰到需要使用 <a> 标签 执行 函数 的时候,void 就变得相对关键。

    < script  >   
   function   log  ( who )   { 
    console .  log  (  '点击了:'   +  who )  ; 

     return  who ; 
   } 
    </ script  >  

   < a   href   =  " javascript: log( ' add ' ); "   >   添加    </ a  >  
   < a   href   =  " javascript: log( ' update ' ); "   >   修改    </ a  >  
   < a   href   =  " javascript: log( ' delete ' ); "   >   删除    </ a  >  
 

这种情况如果不加 void , 页面 内容 就会发生改变,因为 log 函数 存在非 undefined 的返回值。

    < script  >   
   function   log  ( who )   { 
    console .  log  (  '点击了:'   +  who )  ; 

     return  who ; 
   } 
    </ script  >  

   < a   href   =  " javascript: void log( ' add ' ); "   >   添加    </ a  >  
   < a   href   =  " javascript: void log( ' update ' ); "   >   修改    </ a  >  
   < a   href   =  " javascript: void log( ' delete ' ); "   >   删除    </ a  >  
 

加上 void 一样,结果就符合预期了,具体的 添加 、 删除 操作,再通过绑定对应的事件来实现。

3. 小结

void 的使用场景有限,但在某些情况下可以提高 代码 的健壮性,如明确不需要结果的场景下, 加上 void 关键字,这样可以避免未来表达式结果的改变带来的问题。

typeof ? ?逗号操作符

查看更多关于void的详细内容...

  阅读:40次

上一篇

下一篇

第1节:什么是 JavaScript    第2节:学习环境准备    第3节:调试方案    第4节:JavaScript 变量    第5节:JavaScript 数据类型    第6节:JavaScript if 语句    第7节:for 语句    第8节:JavaScript 算数运算符    第9节:JavaScript 比较运算符    第10节:JavaScript 逻辑运算符    第11节:JavaScript 函数    第12节:JavaScript 表达式    第13节:JavaScript 对象    第14节:JavaScript 字符串    第15节:JavaScript 数字    第16节:JavaScript 数组    第17节:JavaScript switch 语句    第18节:JavaScript while 语句    第19节:JavaScript 的 break 与 continue    第20节:JavaScript with    第21节:document.cookie    第22节:JavaScript Function    第23节:JavaScript Math    第24节:JavaScript Date    第25节:JavaScript RegExp    第26节:JavaScript JSON    第27节:什么是 DOM    第28节:DOM 和 JavaScript 的关系    第29节:获取和操作 DOM 节点    第30节:DOM 与事件    第31节:DOM 事件绑定    第32节:DOM 事件对象    第33节:DOM 事件流    第34节:事件相关的优化    第35节:自定义事件    第36节:表单校验    第37节:什么是 BOM    第38节:常用的 BOM 相关对象    第39节:BOM 常用属性和方法    第40节:AJAX    第41节:异常处理    第42节:三元运算符    第43节:逗号操作符    第44节:void    第45节:typeof    第46节:delete 操作符    第47节:debugger    第48节:getter & setter    第49节:new 运算符与构造函数    第50节:JavaScript 原型    第51节:JavaScript instanceof    第52节:JavaScript this    第53节:严格模式    第54节:作用域    第55节:闭包    第56节:变量提升    第57节:对象包装器    第58节:Lodash    第59节:moment    第60节:swiper    第61节:ECMAScript 6    第62节:Node.js    第63节:Babel    第64节:CSS 预处理器    第65节:代码规范    第66节:TypeScript    第67节:WebComponents    第68节:Vue、React、Angular    第69节:小程序    第70节:JavaScript 关键字    第71节:分号导致的问题    第72节:对象属性访问问题    第73节:this 使用问题    第74节:浮点数精度问题    第75节:独一无二的 NaN    第76节:避免全局污染    第77节:控制台观察对象问题    第78节:根据环境选择语言特性    第79节:相关资源