function isObject(obj) {
var type = typeof obj;
return type === 'function' || type === 'object' && !!obj;
}
typeof null
// JavaScript 诞生以来便如此 typeof null === 'object';
在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。由于
null
代表的是空指针(大多数平台下值为 0x00),因此,null 的类型标签是 0,typeof null
也因此返回"object"
。(参考来源)
function isUndefined(obj) {
return obj === void 0;
}
void
运算符 对给定的表达式进行求值,然后返回undefined
void 运算符通常只用于获取
undefined
的原始值,一般使用void(0)
(等同于void 0
)
在使用立即执行的函数表达式时,可以利用 void
运算符让 JavaScript 引擎把一个function
关键字识别成函数表达式而不是函数声明(语句)。
void function iife() {
var bar = function () {};
var baz = function () {};
var foo = function () {
bar();
baz();
};
var biz = function () {};
foo();
biz();
}();
当用户点击一个以 javascript:
开头的URI 时,它会执行URI中的代码,然后用返回的值替换页面内容,除非返回的值是undefined
。void
运算符可用于返回undefined
。例如:
<a href="javascript:void(0);">
这个链接点击之后不会做任何事情,如果去掉 void(),
点击之后整个页面会被替换成一个字符 0。
</a>
<p> chrome中即使<a href="javascript:0;">也没变化,firefox中会变成一个字符串0 </p>
<a href="javascript:void(document.body.style.backgroundColor='green');">
点击这个链接会让页面背景变成绿色。
</a>
注意,虽然这么做是可行的,但利用 javascript:
伪协议来执行 JavaScript 代码是不推荐的,推荐的做法是为链接元素绑定事件。
箭头函数标准中,允许在函数体不使用括号来直接返回值。 如果右侧调用了一个原本没有返回值的函数,其返回值改变后,则会导致非预期的副作用。 安全起见,当函数返回值是一个不会被使用到的值时候,应该使用 void
运算符,来确保返回 undefined
(如下方示例),这样,当 API 改变时,并不会影响箭头函数的行为。
button.onclick = () => void doSomething();
确保了当 doSomething
的返回值从 undefined
变为 true
的时候,不会改变函数的行为.
判断给定变量是否是boolean值
function isBoolean(obj) {
return obj === true || obj === false || toString.call(obj) === '[object Boolean]'
}
(逻辑非)(!)
如果操作数能够转换为true则返回false;否则返回true。能被转换为
false
的值有null
,0
,NaN
, 空字符串("")和undefined
。
** Boolean
** 对象是一个布尔值的对象包装器。
注意不要将基本类型中的布尔值 true
和 false
与值为 true
和 false
的 Boolean
对象弄混了。
其值不是undefined
或null
的任何对象(包括其值为false
的布尔对象)在传递给条件语句时都将计算为true
。 例如,以下if
语句中的条件评估为true
:
var x = new Boolean(false);
if (x) {
// 这里的代码会被执行
}
不要用创建 Boolean
对象的方式将一个非布尔值转化成布尔值,直接将 Boolean
当做转换函数来使用即可,或者使用双重非(!!)
运算符
var x = Boolean(expression); // 推荐
var x = !!(expression); // 推荐
var x = new Boolean(expression); // 不太好
对于任何对象,即使是值为 false
的 Boolean
对象,当将其传给 Boolean
函数时,生成的 Boolean
对象的值都是 true
。
var myFalse = new Boolean(false); // true
var g = new Boolean(myFalse); // true
var myString = new String("Hello");
var s = new Boolean(myString); // true
最后,不要在应该使用基本类型布尔值的地方使用 Boolean
对象。
function isElement(obj) {
return !!(obj && obj.nodeType === 1);
}
只读属性 ** Node.nodeType
** 表示的是该节点的类型。
var type = node.nodeType;
返回一个整数,其代表的是节点类型。其所有可能的值请参考 节点类型常量.
一个
元素
节点,例如<p>
和<div>
未完…