js中的 !!
就是这样:!!variable。哈哈,其实我也是在代码里面看见别人这样用,当时很好奇,所以就搜了一下,哈哈。还真的有很多相关的好文啊。作者是这样说的,
一般用来将后面的表达式转换为布尔型的数据
是不是晕晕的?如果不清楚,自己写几个小例子测试一下不就知道了?
//未使用!!转换
var test;
var receiver = test;
console.log(receiver);//undefined var test=null;
var receiver = test;
console.log(receiver);//null var test = 0;
var receiver = test;
console.log(receiver);// var test = "";
var receiver = test;
console.log(receiver);//""
//使用!!进行转换
var test;
var receiver = !!test;
console.log(receiver);//false var test=null;
var receiver = !!test;
console.log(receiver);//false var test = 0;
var receiver = !!test;
console.log(receiver);//false var test = "";
var receiver = !!test;
console.log(receiver);//false
可见!!对这几种特殊的值进行了布尔值的转换。
那么,如果test=“123”,true,1,{},function(){}呢?
答案是:“123”-->true,true-->true,1-->true,{}-->true,function(){}-->true
实践出真知,看见别人的结论当然没有自己动手试试印象深刻喽,哈哈,我直接给出答案了,怪我喽?快自己动手试试吧
js中的 !!的更多相关文章
- 5.0 JS中引用类型介绍
其实,在前面的"js的六大数据类型"文章中稍微说了一下引用类型.前面我们说到js中有六大数据类型(五种基本数据类型 + 一种引用类型).下面的章节中,我们将详细讲解引用类型. 1. ...
- 【repost】JS中的异常处理方法分享
我们在编写js过程中,难免会遇到一些代码错误问题,需要找出来,有些时候怕因为js问题导致用户体验差,这里给出一些解决方法 js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要 ...
- JS中给正则表达式加变量
前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下. 一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...
- js中几种实用的跨域方法原理详解(转)
今天研究js跨域问题的时候发现一篇好博,非常详细地讲解了js几种跨域方法的原理,特分享一下. 原博地址:http://www.cnblogs.com/2050/p/3191744.html 下面正文开 ...
- 关于js中的this
关于js中的this this是javascript中一个很特别的关键字,也是一种很复杂的机制,学习this的第一步就是要明白this既不指向函数自身也不指向函数的词法作用域,this实际上是函数被调 ...
- 表值函数与JS中split()的联系
在公司用云平台做开发就是麻烦 ,做了很多功能或者有些收获,都没办法写博客,结果回家了自己要把大脑里面记住的写出来. split()这个函数我们并不陌生,但是当前台有许多字段然后随意勾选后的这些参数传递 ...
- JS中 call() 与apply 方法
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- 在node.js中,使用基于ORM架构的Sequelize,操作mysql数据库之增删改查
Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持M ...
- 分析js中的constructor 和prototype
在javascript的使用过程中,constructor 和prototype这两个概念是相当重要的,深入的理解这两个概念对理解js的一些核心概念非常的重要. 我们在定义函数的时候,函数定义的时候函 ...
- 如何在Node.js中合并两个复杂对象
通常情况下,在Node.js中我们可以通过underscore的extend或者lodash的merge来合并两个对象,但是对于像下面这种复杂的对象,要如何来应对呢? 例如我有以下两个object: ...
随机推荐
- android log机制——输出log【转】
转自:http://blog.csdn.net/tdstds/article/details/19084327 目录(?)[-] 在android Java code中输出log Logprintln ...
- oracle 11g 64w 用32位的pl/sql
1. 下载64位Oracle,解压两文件,解压完成后将文件合并,安装: 2. 下载PL/SQL,安装: 3. 下载instantclient-basic-win32-11.2.0.1.0.zip ...
- mongodb 2.6 window 安装启动服务
安装目录:C:\Program Files\MongoDB 2.6 Standard\ 创建目录:D:\mongodb\data 通过cmd,执行如下命令: cd C:\Program Files ...
- js声明
var a = 2; //我们习惯把这条语句当做一条声明 但是js引擎把它当做两条声明. var a; //在编译时执行 同时var a;存在提升 a = 2;//在运行是执行 赋值lhs不会提升 ...
- 主线程中创建不同的handler实例,接收消息会不会冲突
http://www.cnblogs.com/transmuse/archive/2011/05/16/2048073.html这篇博文讲的比较透彻,可参考. 当然结论是不会冲突.因为每个messag ...
- python基础使用
Python 标识符 在python里,标识符有字母.数字.下划线组成. 在python中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. python中的标识符是区分大小写的. 以 ...
- java IO和NIO 的区别
Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别. IO NIO 面向流 面向缓冲 阻塞IO 非 ...
- [ios][swift]使用swift闭包进行viewcontroller反向传值
闭包参考:http://c.biancheng.net/cpp/html/2285.html 闭包详解 传值参考:http://www.tuicool.com/articles/vy2uUz Sw ...
- YTU 3005: 皇后问题(栈和队列)
3005: 皇后问题(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 6 解决: 3 题目描述 编写一个函数,求解皇后问题:在n*n的方格棋盘上,放置n个皇后,要求每个皇后不 ...
- SlickGrid example 7:鼠标事件
响应鼠标事件,可以左键快捷选择切换选项,可右键弹出菜单栏. 代码: <!DOCTYPE HTML> <html> <head> <meta http-eq ...