谈谈JS中的!!


Posted in Javascript onDecember 07, 2017

!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false。

var a;
var b=!!a;

a默认是undefined。!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判断提供便利。

因为javascript是弱类型的语言(变量没有固定的数据类型)所以有时需要强制转换为相应的类型,类似的如:

a=parseInt(“1234″)
a=”1234″-0 //转换为数字
b=1234+”” //转换为字符串
c=someObject.toString() //将对象转换为字符串

其中第1种、第4种为显式转换,2、3为隐式转换

布尔型的转换,javascript约定规则为

false、undefinded、null、0、”” 为 false

true、1、”somestring”、[Object] 为 true

对null与undefined等其他用隐式转换的值,用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于将这些值转换为“等价”的布尔值;

var foo;
alert(!foo);//undifined情况下,一个感叹号返回的是true;
alert(!goo);//null情况下,一个感叹号返回的也是true;
var o={flag:true};
var test=!!o.flag;//等效于var test=o.flag||false;
alert(test);

这段例子,演示了在undifined和null时,用一个感叹号返回的都是true,用两个感叹号返回的就是false,所以两个感叹号的作用就在于,如果明确设置了变量的值(非null/undifined/0/”“等值),结果就会根据变量的实际值来返回,如果没有设置,结果就会返回false。

JS中的“!!”

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或undefined。

总结

以上所述是小编给大家介绍的JS中的!!,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery动画与特效详解
Feb 01 Javascript
详细解密jsonp跨域请求
Apr 15 Javascript
简介JavaScript中的setDate()方法的使用
Jun 11 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
jquery zTree异步加载简单实例讲解
Feb 25 Javascript
JavaScript实现前端实时搜索功能
Mar 26 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
vue 开发一个按钮组件的示例代码
Mar 27 Javascript
JavaScript常见JSON操作实例分析
Aug 08 Javascript
JSON基本语法及与JavaScript的异同实例分析
Jan 04 Javascript
JS内置对象和Math对象知识点详解
Apr 03 Javascript
javascript 数组(list)添加/删除的实现
Dec 17 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
Dec 07 #Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
Dec 07 #Javascript
jquery学习笔记之无new构建详解
Dec 07 #jQuery
利用Node.js检测端口是否被占用的方法
Dec 07 #Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
Dec 07 #Javascript
Vue通过URL传参如何控制全局console.log的开关详解
Dec 07 #Javascript
Vue中添加手机验证码组件功能操作方法
Dec 07 #Javascript
You might like
解读PHP中上传文件的处理问题
2016/05/29 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
JS实现可点击展开与关闭的左侧广告代码
2015/09/02 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
Python 正则表达式的高级用法
2016/12/04 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
基于django传递数据到后端的例子
2019/08/16 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
什么是数据抽象
2016/11/26 面试题
《学会待客》教学反思
2014/02/22 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
如何写通讯稿
2015/07/22 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python
vue的项目如何打包上线
2022/04/13 Vue.js
Python作用域和名称空间的详细介绍
2022/04/13 Python