首页 > 其他分享 >js中!!的用法(双感叹号)

js中!!的用法(双感叹号)

时间:2023-09-22 17:16:37浏览次数:38  
标签:false temp 结果 js 用法 var 感叹号 alert true

在javascript代码中经常会见到!!的情况,本文即以实例形式较为深入的分析javascript中2个感叹号的用法。分享给大家供大家参考之用。具体分析如下:

javascript中的!!是逻辑"非非",即是在逻辑“非”的基础上再"非"一次。通过!或!!可以将很多类型转换成bool类型,再做其它判断。

使用javascript时,有时会在变量前面加上两个感叹号,这样做表示什么含义呢?Javascript中,!表示运算符“非”,如果变量不是布尔类型,会将变量自动转化为布尔类型,再取非,那么用两个!!就可以将变量转化为对应布尔值。

一、应用场景:判断一个对象是否存在

假设有这样一个json对象:

{ color: "#E3E3E3", "font-weight": "bold" }

需要判断是否存在,用!!再好不过。

如果仅仅打印对象,无法判断是否存在:

var temp = { color: "#A60000", "font-weight": "bold" };
alert(temp);

结果:[object: Object]

如果对json对象实施!或!!,就可以判断该json对象是否存在:

var temp = { color: "#A60000", "font-weight": "bold" };
alert(!temp);

*结果:*false

var temp = { color: "#A60000", "font-weight": "bold" };
alert(!!temp);

结果:true

二、通过!或!!把各种类型转换成bool类型的惯例

1.对null的"非"返回true

var temp = null;
alert(temp);

结果:null

var temp = null;
alert(!temp); 

结果:true

var temp = null;
alert(!!temp); 

结果:false

2.对undefined的"非"返回true

var temp;
alert(temp);

结果:undefined

var temp;
alert(!temp);

结果:true

var temp;
alert(!!temp);

结果:false

3.对空字符串的"非"返回true

var temp="";
alert(temp);

结果:空

var temp="";
alert(!temp);

结果:true

var temp="";
alert(!!temp);

结果:false

4.对非零整型的"非"返回false

var temp=1;
alert(temp);

结果:1

var temp=1;
alert(!temp);

结果:false

var temp=1;
alert(!!temp);

结果:true

5.对0的"非"返回true

var temp = 0;
alert(temp);

结果:0

var temp = 0;
alert(!temp);

结果:true

var temp = 0;
alert(!!temp);

结果:false

6.对字符串的"非"返回false

var temp="ab";
alert(temp);

结果:ab

var temp="ab";
alert(!temp);

结果:false

var temp="ab";
alert(!!temp);

结果:true

7.对数组的"非"返回false

var temp=[1,2];
alert(temp);

结果:1,2

var temp=[1,2];
alert(!temp);

结果:false

var temp=[1,2];
alert(!!temp);

结果:true

 

标签:false,temp,结果,js,用法,var,感叹号,alert,true
From: https://www.cnblogs.com/ranyonsue/p/17722863.html

相关文章

  • IF语句的三种用法
    第一种:IF语句IF(expr1,expr2,expr3); expr1、expr2、expr3分别代表条件1、条件2、条件3如果expr1为TRUE,则IF()返回值为expr2,否则返回值为expr3例子:updatesalarysetsex=if(sex='男','女','男')将salary表中的性别进行转换,男变女,女变男第二种:IFNULL(expr1,expr2)假......
  • 微信小程序全局变量(globalData)和缓存(StorageSync)的区别和用法
    globalData和storage的区别一、app.globalData是全局变量,下次进入的时候,就要重新获取,一般用于:1、保存一些可能涉及安全类的数据,例如资源类,每次需要很准确的,就建议用全局变量。2、全局变量每次关闭小程序重新打开的时候,都会进行初始化更新。二、缓存(StorageSync)本地存储,storage......
  • JS实现电子签名,并且将带logo和时间水印的电子签名保存到本地
    页面效果如下 本地保存的电子签名图片如下 具体实现代码如下<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>电子签名</title><style>#canvas{border:1pxsolid#000;margin-bo......
  • @JsonFormat 使用方法
    @JsonFormat(shape=JsonFormat.Shape.STRING,pattern="yyyy-MM-ddHH:mm:ss",timezone="GMT+8")privateLocalDatecreateTime;错误示范:@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")privateLocalDatecreateTime;@JsonFormat注解是一......
  • php js+laravel+mysql手术麻醉临床信息系统
    医院手麻系统源码 技术架构:phpjs+laravel+mysql vue2elementB/S网页版手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字......
  • JsonConvert相关操作
    #序列化时,忽略jsonproperty特性的作用:publicstaticclassJsonConvertExtension{publicstaticstringCustomSerialize(objectobj){JsonSerializerSettingssettings=newJsonSerializerSettings();settings.Formatting......
  • 一次性搞懂JS字符串截取方法substring()、slice()以及substr()的用法和区别
    substring()和slice()都接受两个参数,“start”和“end”。“start”表示截取的开始位置,“end”表示结束的位置(不包括该位置的字符,也就是前要后不要)。如果不传参数,则返回字符串本身的一个副本。 如果只传一个参数,则从该位置开始,截取到字符串的末尾。 如果传递两个参数,则......
  • 循环 JSONArray
    当需要遍历一个JSONArray时,可以使用Java中的循环结构来实现。以下是一个示例代码,演示如何使用Java循环遍历一个JSONArray: javaimportorg.json.JSONArray;importorg.json.JSONObject;publicclassJSONArrayExample{publicstaticvoidmain(String[]args){......
  • js 中 " + " 的使用
    //加法计算consta1=2+2//4letm1=5,m2='5'letn1=11,n2='11'letk1=70,k2='70'm1++//6(等价于m1=m1+1)m1++//6n1+=1//12(等价于n1=n1+1)n2+=1......
  • js jquery input radio点击事件
     HTML:<inputtype="radio"name="myname"value="1"/>1<inputtype="radio"name="myname"value="2"/>2 jquery代码: //点击事件change$('input[type=radio][name=myname]').ch......