美文网首页
JS if 变量判断的高阶用法

JS if 变量判断的高阶用法

作者: DaphX | 来源:发表于2022-03-18 14:56 被阅读0次

一、if(变量)的用法

if条件语句非常简单,如下:

if (条件) {
    如果条件为 true 时执行的代码
}

一般『条件』是由逻辑表达式组成,比如:

if (age > 20 && name == '张三') {
    return "helloWorld"
}

但是除了这种常规的条件判断之外,还有一些非常规的,比如:

if(age){
  return "helloWorld"
}

这种判断『变量』的方式,具体表达什么含义呢?如何使用?以下几种场景,具体分析 :

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的判断

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

String==Number --->toNumber(String)==Number

"" = 0 ; //true,因为“”转换为0
"  " = 0 ; //true
"hello" == 1  //false  ,因为"hello"转换为NaN
"hello" == 0 //false,同理

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

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
null==undefined,//true

==知识点

  1. 如果两个值类型相同,则执行严格相等的运算
  2. 如果两个值的类型不同
  3. 如果一个是null,一个是undefined,那么相等
  4. 如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
  5. 如果一个值是true/false则将其转为1/0比较
  6. 如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
  7. 其它就不相等了

toNumber

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

相关文章

  • JS if 变量判断的高阶用法

    一、if(变量)的用法 if条件语句非常简单,如下: 一般『条件』是由逻辑表达式组成,比如: 但是除了这种常规的条...

  • Golang 学习之“”、nil 和 len(s)的对比

    1 用法 使用”“判断string变量是否为空。输入: 输出:s is empty 2 nil用法 使用nil判断...

  • JS中typeof的用法章

    js是一门弱语言,它在声明变量时无需确定变量的类型,js在运行时会自动判断。对于判断一个变量的类型,js提供 ...

  • js高阶函数用法

    filter(): 语法:var filteredArray = array.filter(callback, t...

  • js的高阶函数用法

    1、找出数组里<100的数值。filter过滤函数 2、将数组里<100的数值*2。map映射函数 3、将<100...

  • go常用包——template

    内容 1 模板基本用法2 模板进阶用法--定义变量 --条件判断 --循环 -- with语句3 模板高级用法--...

  • JS中typeof的用法

    js是一门弱语言,它在声明变量时无需确定变量的类型,js在运行时会自动判断。那么如何判断一个变量的类型呢,...

  • React-Native常用技巧

    JS 语法 1. js中 !!用法 js中 ! 的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!...

  • JS 笔记

    temp JS 变量类型判断 JS 浮点 https://github.com/camsong/blog/issu...

  • 猫眼

    var变量提升,函数声明提升,消除变量声明提升(let); 高阶函数,函数式的编程,柯里化 原型链继承,js面向对...

网友评论

      本文标题:JS if 变量判断的高阶用法

      本文链接:https://www.haomeiwen.com/subject/ozyidrtx.html