探讨js中的双感叹号判断
今天看qunit源代码,发现一段很奇怪的代码,虽然能领会他的意思,但是不明白双感叹号起到的作用。
代码如下:
function id( name ) {
return !!( typeof document !== "undefined" && document && document.getElementById ) &&
document.getElementById( name );
}
然后去网上查了些资料,他相当于三元运算符,返回boolean值。
代码如下:
var ret = !!document.getElementById
var ret = document.getElementById ? true : false;
当值是非空字符串和非零数字返回true,当值是空字符串、0或者null返回false。
代码如下:
var a = " "; alert(!!a); //true
var a = "s"; alert(!!a); //true
var a = true; alert(!!a); //true
var a = 1; alert(!!a); //true
var a = -1; alert(!!a); //true
var a = -2; alert(!!a); //true
var a = 0; alert(!!a); //false
var a = ""; alert(!!a); //false
var a = false; alert(!!a); //false
var a = null; alert(!!a); //false
相关推荐
-
JavaScript中双符号的运算详解
一.双波浪号 var i = 5.1; var j = 5.5; console.log(~~i); // 5 console.log(~~j); // 5 作用类似Math.floor. 类似的意思是在处理正数的时候,如果处理负数就它俩就不同了: ~~-5.1 // 5 Math.floor(-5.1) // -6 ~~-5.5 // 5 Math.floor(-5.5) // -6 注: Math.ceil(x) Returns the smallest integer greater th
-
JavaScript中两个感叹号的作用说明
先用一个简单的例子说明: 复制代码 代码如下: var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test); 由于对null与undefined用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于,如果明确设置了o中flag的值(非null/undefined/0""/等值),自然test就会取跟o.flag一样的值:如果没有设置,test就会默认为false,而不是null或u
-
javascript中2个感叹号的用法实例详解
在javascript代码中经常会见到!!的情况,本文即以实例形式较为深入的分析javascript中2个感叹号的用法.分享给大家供大家参考之用.具体分析如下: javascript中的!!是逻辑"非非",即是在逻辑"非"的基础上再"非"一次.通过!或!!可以将很多类型转换成bool类型,再做其它判断. 一.应用场景:判断一个对象是否存在 假设有这样一个json对象: { color: "#E3E3E3", "fon
-
探讨js中的双感叹号判断
今天看qunit源代码,发现一段很奇怪的代码,虽然能领会他的意思,但是不明白双感叹号起到的作用. 复制代码 代码如下: function id( name ) { return !!( typeof document !== "undefined" && document && document.getElementById ) && document.getElementById( name );} 然后去网上查了些
-
JS中数据类型的正确判断方法实例
目录 前言 typeof是否能正确判断类型? instanceof是否能正确判断类型? Object.prototype.toString.call() constructor Array.isArray() 正则判断 总结 前言 Javascript是一门动态类型的语言,一个变量从声明到最后使用,可能经过了很多个函数,而数据类型也会发生改变,那么,对一个变量的数据类型判断就显得尤为重要. typeof是否能正确判断类型? typeof 是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数
-
详解JavaScript (!!) 中的双感叹号是干什么用的
目录 JavaScript (!!) 中的双感叹号是干什么用的? 真与真 那么为什么要双感叹号呢? JavaScript (!!) 中的双感叹号是干什么用的? 如果您曾在某人的 JavaScript 代码中注意到双感叹号 (!!),您可能会好奇它的用途和作用.这很简单:这是一种将变量转换为布尔值(真或假)的捷径.让我解释. typeof JavaScript!= '静态' JavaScript 不是静态语言,而是动态语言.这意味着变量可以引用或保存任何类型的值,此外,该类型可以随时更改.无论您喜
-
实例分析JS中的相等性判断===、 ==和Object.is()
相信刚接触JS的人都会被他的想等性判断给整糊涂,看看下面代码,你能答对几个? NaN === NaN // false NaN == NaN // false Object.is(NaN, NaN) // true 0 == false // true 1 == true // true Number(null) === 0 // true null == 0 // false Javascript提供了三种不同的值比较操作,分别是严格相等.宽松相等.以及Object.is,希望看完下面的内容,
-
js中el表达式的使用和非空判断方法
注意,这里想说的不是jsp里面嵌套的el表达式的使用,而是在js中使用. 场景: 页面跳转后,使用spring mvc向前端页面传过来一个json对象,要在js中获取后,做处理. 返回的json对象: {"nodes":[{"contactmobile":"15922208502","orderno":"XNH31918062989476864"},{"id":"12198&q
-
JS中队列和双端队列实现及应用详解
队列 队列 双端队列数据结构 应用 用击鼓传花游戏模拟循环队列 用双端对列检查一个词是否构成回文 生成 1 到 n 的二进制数 队列和双端队列 队列遵循先进后出(FIFO, 也称为先来先服务) 原则的. 日常有很多这样场景: 排队购票.银行排队等. 由对列的特性,银行排队为例, 队列应该包含如下基本操作: 加入队列(取号) enqueue 从队列中移除(办理业务离开) dequeue 当前排队号码(呼叫下一个人) peek 当前队列长度(当前排队人数) size 判断队列是不是空 isEmpty
-
JS中判断null的方法分析
本文实例讲述了JS中判断null的方法.分享给大家供大家参考,具体如下: 以下是不正确的方法: var exp = null; if (exp == null) { alert("is null"); } exp 为 undefined 时,也会得到与 null 相同的结果,虽然 null 和 undefined 不一样. 注意:要同时判断 null 和 undefined 时可使用本法. var exp = null; if (!exp) { alert("is null&
-
js中判断变量类型函数typeof的用法总结
1.作用: typeof 运算符返回一个用来表示表达式的数据类型的字符串. 可能的字符串有:"number"."string"."boolean"."object"."function" 和 "undefined". 2.常用返回值说明 表达式 返回值 typeof undefined 'undefined' typeof null 'object' typeof true 'boole
-
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例 <script type="text/javascript"> var str = 'qwertyuilo.,mnbvcsarrrrrrrrtyuiop;l,mhgfdqrtyuio;.cvxsrtyiuo'; var json = {}; //遍历str拆解其中的每一个字符将其某个字符的值及出现的个数拿出来作为json的kv for (var i = 0; i < str.length; i++) { //
-
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
1.typeof(param) 返回param的类型(string) 这种方法是JS中的定义的全局方法,也是编译者们最常用的方法,优点就是使用简单.好记,缺点是不能很好的判断object.null.array.regexp和自定义对象. 示例代码: 复制代码 代码如下: var str='str';var arr=['1','2'];var num=1;var bool=true;var obj={name:'test'};var nullObj=null;var undefinedObj=un
随机推荐
- 解析XPath语法之在C#中使用XPath的示例详解
- angularJS与bootstrap结合实现动态加载弹出提示内容
- vue.js学习之vue-cli定制脚手架详解
- 防止adsl用户被入侵的一些技巧与设置方法
- 使用XML库的方式,实现RPC通信的方法(推荐)
- 判定是否原生方法的JS代码
- C#使用checkedListBox1控件链接数据库的方法示例
- PHP的十个高级技巧(上中下)第1/3页
- http请求绕过Filter的实现实例
- JavaScipt选取文档元素的方法(推荐)
- java正则表达式使用示例
- C#绘制曲线图的方法
- jQuery中:visible选择器用法实例
- jQuery实现自动调用和触发某个事件的方法
- 微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
- Javascript C#真正可以交互的DES加解密代码
- JavaScript数值千分位格式化的两种简单实现方法
- c# List find()方法返回值的问题说明(返回结果为对象的指针)
- gridview 显示图片的实例代码
- location.hash保存页面状态的技巧