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 ? ?逗号操作符声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did92437