一. if(xx)的判断

JavaScript 遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值。系统内部会自动调用Boolean函数。

1.当if括号里面的表达式为Boolean时,直接判断

if (true){
console.log("true"); //true
}
if (false){
console.log("true"); //false
}

2.当if括号里面的表达式为Number时,分两种情况,当number为+0,-0,NaN的时候,为false;其他为true。

if(0){
console.log("true"); //false
}
if(NaN){
console.log("true"); //false
}
if(1){
console.log("true"); //true
}

3.当if括号里面的表达式为String时,空字符串为false,其他为true;

if(""){
console.log("true"); //false
}
if("abc"){
console.log("true"); //true
}

4.当if括号里面的表达式为Undefined时,为false;

if(Undefined){
console.log("true"); //false
}

5.当if括号里面的表达式为null时,为false;

if(null){
console.log("true"); //false
}

toBoolean

类型 结果
undefined false
null false
Boolean 直接判断
string ""(空字符串)为false,其他为true
Object true
Number +0,-0,Nan为false,其他为true

二. a==b的判断

==是比较两个值是否相等,相同类型直接比较,不同类型的话,看情况转换。

  1. String==Number --->toNumber(String)==Number
"" = 0 ; //true,因为“”转换为0
" " = 0 ; //true
"hello" == 1 //false ,因为"hello"转换为NaN
"hello" == 0 //false,同理
  1. Boolean==(any) --->toNumber(Boolean)==(any)
1==true; //true,因为true转换为1
0==false;//true ,因为false转换为0
"0" == true //false
"0" == false //true
"00" == false //true
"0.00" == false //true
  1. Object==String/Number---->toPrimitive(Object)
    对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结
{} == true  // false
[] == true //false
var obj = {
a: 0,
valueOf: function(){return 1}
}
obj == "[object Object]" //false
obj == 1 //true
obj == true //true
  1. null==undefined,//true
  • ==知识点
    如果两个值类型相同,则执行严格相等的运算
    如果两个值的类型不同
    如果一个是null,一个是undefined,那么相等
    如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
    如果一个值是true/false则将其转为1/0比较
    如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
    其它就不相等了

toNumber

类型 结果
Undefined NaN
Null 0
Boolean ture->1,false->0
String (""-->0, " "-->0 )空字符串与空白字符串转换数值0,abc"->NaN,"123"->123

JavaScript 的if语句和==的判断的更多相关文章

  1. Javascript 利用 switch 语句进行范围判断

    ; switch (true) { ): alert("less than five"); break; ): alert("between 5 and 8") ...

  2. 前端笔记知识点整合之JavaScript(三)关于条件判断语句、循环语句那点事

      一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力 ...

  3. 前端笔记之JavaScript(三)关于条件判断语句、循环语句那点事

    一.条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的 1.1 if……else…… 条件分支的主力语法,这个主力语法 ...

  4. JavaScript If...Else 语句

    JavaScript If...Else 语句 JavaScript的开头和结束标签: <script type="text/javascript"></scri ...

  5. 【详解JavaScript系列】JavaScript之流程语句

    一 开篇概述 本讲主要讲解JavaScript流程语句,其大致内容包括如下: 其中,常用的if,while,do..while,for在本片文章就不论述,重点论述for..in..,label,bre ...

  6. JavaScript if 条件语句

    JavaScript if 条件语句 使用: if(条件){ }else if(条件){ }else if(条件){ }else{ } 示例: // 判断相等 if(1==1){ } // 判断不等 ...

  7. Javascript - 表达式与语句

    表达式与语句(Expression&Statement) 流程控制语句 1.嵌入式语句 嵌入式即这种语句可以无限嵌套N层.所有嵌入式语句只需要键入首个关键单词,在visual studio里按 ...

  8. JavaScript权威指南--语句

    知识要点 在javascript中,表达式是短语,那么语句(statement)就是整句或命令.表达式计算出一个值,但语句用来执行以使某件事发生. 1.表达式语句 具有副作用的表达式是JavaScri ...

  9. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断

    C#保留2位小数几种场景总结   场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...

随机推荐

  1. Python内置模块之subprocess

    import subprocess ret = subprocess.Popen('netstat -ano',shell=True,stdout=subprocess.PIPE,stderr=sub ...

  2. 金蝶KIS&K3助记码SQL数据库批量刷新

    金蝶KIS&K3助记码SQL数据库批量刷新 用的次数不多,就没有写入存储过程或者触发里面了,可以自行实现. 第一步选择对应账套的数据库,执行下面的命令,这个是一个函数. go if exist ...

  3. WRITE T AFTER ADVANCING 2 LINES

    WRITE T AFTER ADVANCING 2 LINES 意思是“在前进两行之后打印T记录内容”  (ADVANCING 和 LINE 字可省略) WRITE T BEFORE ADVANCIN ...

  4. KVM嵌套虚拟化nested之CPU透传

    嵌套式虚拟nested是一个可通过内核参数来启用的功能.它能够使一台虚拟机具有物理机CPU特性,支持vmx或者svm(AMD)硬件虚拟化.该特性需要内核升级到Linux 3.X版本 ,所以在cento ...

  5. 15,EasyNetQ-高级API

    EasyNetQ的使命是为基于RabbitMQ的消息传递提供最简单的API. 核心IBus接口有意避免公开AMQP概念,如交换,绑定和队列,而是实现基于消息类型的默认交换绑定队列拓扑. 对于某些场景, ...

  6. c++中一个多态的实例

    #include <iostream> #include <fstream> #include <vector> #include <algorithm> ...

  7. Jmeter学习系列----2 录制脚本

    虽然专业的自动化测试人员都不会选择录制脚本的方式来进行自动化脚本的编写,但是,我们作为初学者还是可以学习一下怎么利用工具来进行脚本的录制,体验一下自动化工具的效率,下面,具体讲下如何使用jmeter自 ...

  8. __x__(8)0906第三天__乱码问题

    需要知道: 计算机只认 0 1 任何内容,计算机都会以 0 1 去存储 所以 0 1 与内容的编码方式/解码方式需要依照一定的规则,实现 0 1 与内容之间的转换. 字符集:一定的规则,由编码/解码采 ...

  9. [LeetCode] Champagne Tower 香槟塔

    We stack glasses in a pyramid, where the first row has 1 glass, the second row has 2 glasses, and so ...

  10. [LeetCode] Random Pick with Weight 根据权重随机取点

    Given an array w of positive integers, where w[i] describes the weight of index i, write a function  ...