Void运算符 与 undefined类型
2017-04-26 17:48
176 查看
void 运算符 对给定的表达式进行求值,然后返回 undefined。
何为求值,就是执行之后的表达式。我们最常见的就是
<a href="javascript: void(0)"></a> //这段代码使点击这个a标签什么都不做
为什么呢?
重点在于,不管表达式是什么,它返回的始终都是一个undefined。
顺序也很重要,先计算表达式,然后再返回。
怎么用?
1、在使用立即执行的函数表达式时,可以利用 void 运算符让 JavaScript 引擎把一个函数识别成函数表达式而不是函数声明(语句)。
void function iife() { var bar = function () {}; var baz = function () {}; var foo = function () { bar(); baz(); }; var biz = function () {}; foo(); biz(); }();
普通立即执行的函数表达式都这样
(function fn(){})(),这样引擎就会解析为一个表达式。
不使用
()括起来的时候,引擎会将其解析为函数表达式,但是通过一个
void运算符就可以避免这个问题。因为void 运算符后面本来就是一个表达式。
2、判断时用作undefined的替身
之前a标签的例子就是这样使用的。
比如我们判断一个变量是不是undefined的时候
options === void 0
为什么要使用void 0来替换,不直接使用undefined来作判断?
1、因为undefined在全局变量中是一个属性,本是只读属性,但是在低版本IE的局部作用域中是可以被重新被赋值的。因为这里不安全所以使用void 来替换。2、使用void来替换的时候,void后面必须要跟一个表达式,其实任意表达式都是可以的。既然都能满足,我们只是想得到一个稳定的undefined,那为什么不用最简短的表达式呢,void 0就应运而生了。有些地方也写作void(0);
4000
相关文章推荐
- 错误 1 error C2679: 二进制“<<”: 没有找到接受“void”类型的右操作数的运算符(或没有可接受的转换)
- js判断undefined类型
- 数据类型、运算符、表达式问题解答
- 重新夯实基础,the c programingn language 再读笔记之类型、运算符与表达式
- 数据类型、运算符与表达式
- Mysql数据类型和运算符学习
- Mysql数据类型和运算符(二)
- js判断undefined类型
- js中undefined,null和typeof运算符
- php基础语法(数据类型、运算符)
- effective javascript(四)——避免对于混合类型使用==运算符
- 【java数据类型和运算符】
- 使用void指针给函数传递不同的数据类型
- 数据类型和运算符
- C++ 类型转换运算符
- 17.2015.08.04第十八节课 C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、变量、数据类型转换、算术运算符、赋值运算符、关系运算符、逻辑运算符、字符串的常用方法)
- Shell基础:变量类型 & 运算符
- C++类型转换函数(类型转换运算符函数)
- Angular2入门:TypeScript的类型 - 类型、null、undefined
- 数据类型与运算符