Javascript 中关于if(xx)和 x==y的判断

Javascript 中关于if(xx)和 x==y的判断是非常基础但却十分重要的内容,以下是笔者学习的一些总结:

1、if(xx)的判断:

在if(xx)的判断中,括号里的内容会强制转换会布尔类型,结果为true则后面语句执行,为false则不执行。在此注意一条就可以了:对于括号里的表达式,会被强制转换为布尔类型.

如何强制转换呢?规则如下:

举几个栗子,如下代码输出什么?

A:

if ("hello") {

console.log("hello")

}

括号里的字符串会强制转换为布尔类型,结果为true,后面语句执行,结果输出hello.

B: if ("") {

console.log(‘empty‘)

}

括号里是个空字符串,转换为false,后面语句不执行。

C: if (" ") {

console.log(‘blank‘)

}

括号里像一个空字符串,但其实不是,它里面有空格,所以它是空白字符串,转换为true,后面语句执行,结果输出blank。

D:

if ([0]) {

console.log(‘array‘)

}

括号里是个对象,转换为true,后面语句执行,结果输出array。

E:

if (‘0.00‘) {

console.log(‘0.00‘)

}

括号里是字符串,转换为true,后面语句执行,结果输出0.00

2、a==b的判断

首先,我们知道:

JS中的值有两种类型:原始类型(Primitive)、对象类型(Object)。

基本类型包括:Undefined、Null、Boolean、Number和String等五种。

Undefined类型和Null类型的都只有一个值,即undefined和null;Boolean类型有两个值:true和false;Number类型的值有很多很多;String类型的值理论上有无数个。

所有对象都有valueOf()和toString()方法,它们继承自Object,当然也可能被子类重写。

表达式: X == Y

其中X和Y是上述六种类型中某一种类型的值,当X和Y的类型相同时,X==Y可以转化为X===Y。

其他类型情况就多了,以图来说明:

图1中,

当布尔值与其他类型的值作比较时,布尔值会转化为数字

true -> 1             false -> 0
N表示ToNumber操作,即将操作数转为数字。

P表示ToPrimitive操作,即将操作数转为原始类型的值。对于 Object 类型,先尝试调用 .valueOf 方法获取结果。

如果没定义,再尝试调用 .toString方法获取结果

我们把Undefined和Null用不确定的、没有的或者空的部分来描述,把Boolean、Number、String和Object用存在的、确实

的、有和非空的部分来描述。    那这两个部分中的任何值做==运算,结果当然都是false。 undefined和null同属于一个部分,

它们做= =运算自然为true. 所以undefined == null,结果是true。且它俩与所有其他值比较的结果都是false。

可以看出在类型转换的过程中,有向数字number转换的方向:

String == Boolean,需要两个操作数同时转为Number。

String/Boolean == Number,需要String/Boolean转为Number。

Object == Primitive,需要Object转为Primitive(具体通过valueOf和toString方法)

暂时先写到这里了,有点粗糙,以后复习时再加工,有不对之处欢迎批评指正。

原文地址:https://www.cnblogs.com/xuanang/p/9211368.html

时间: 2024-10-12 14:55:58

Javascript 中关于if(xx)和 x==y的判断的相关文章

JavaScript中“typeof”运算符与“instanceof”运算符的差异

在JavaScript中,运算符“typeof”和“instanceof”都可以用来判断数据的类型,那么这两个运算符有什么不同之处呢? 差异一:使用方式不同. 最明显的差异就是这两个运算符的使用方式了.“typeof”是一元运算符,其后直接跟需要进行类型判断的数据:而“instanceof”是二元运算符,其左侧是需要判断的数据,右侧是用于比较的类型. //typeof是一元运算符: var amount = 108; console.log(typeof amout);//控制台输出“numbe

JavaScript中判断为整数的多种方式

原文:JavaScript中判断为整数的多种方式 之前记录过JavaScript中判断为数字类型的多种方式,这篇看看如何判断为整数类型(Integer). JavaScript中不区分整数和浮点数,所有数字内部都采用64位浮点格式表示.但实际操作中比如数组索引.位操作则是基于32位整数. 方式一.使用取余运算符判断 任何整数都会被1整除,即余数是0.利用这个规则来判断是否是整数. function isInteger(obj) { return obj%1 === 0 } isInteger(3

javascript中的正则表达式

javascript中采用RegExp对象表示正则表达式. 而RegExp对象一共有3个方法, 他们分别是: 1.compile 2.exec 3.test 那么这三个方法到底是怎么用的呢? 首先,compile没有什么用,它只能在多次正则匹配的时候提高些许效率,先不去考虑. 下面说说exec,它返回找到的指定的值,这个值在字符串中的位置,以及整个字符串.如果找不到,返回null. 1 var pattern = new RegExp('man', 'g'); 2 var str1 = "i a

用实例谈谈javascript中的this和prototype

本文通过几个实例谈谈js中一些基础概念的问题.首先回顾一下js这门语言的特点:除了对象什么都没有.函数在js语言中被看作一种特殊的数据类型,特殊在包含代码并且可以执行,但落点在它是一种数据类型,与数字.字符串等一样.    理解了这个,那么js语言中的全局作用域和函数作用域.全局变量和局部变量.可以通过全局对象和非全局对象划分.如果函数或其他数据类型,不依托非全局变量,那么就默认依托全局变量,即作为全局对象的属性或方法,否则被当作局部对象方法或属性.this被用作指向属性和方法所依托的对象.搞清

javascript中的原始值和复杂值

前面的话 javascript的数据类型可以分为两种:原始类型(基本类型或者简单类型)和引用类型. 原始类型:Undefined,Null,Boolean,Number,String五种: 引用类型:Object,Array,Function: 与此相对应的,它们的值分别被称为原始值和复杂值. 特性 原始值 原始值是表示javascript中可用的数据或信息的最底层的形式或者最简单的形式.原始类型的值被称为原始值,因为它们的值是不可被细化的.也就是说,数字是数字,字符串是字符串,布尔值是true

javascript中this的指向

作为一个前端小白在开发中对于this的指向问题有时候总是会模糊,于是花时间研究了一番. 首先this是JS的关键字,this是js函数在运行是生成的一个内部对象,生成的这个this只能在函数内部使用. 但是随着函数使用场合的不同,this的值会发生变化.有一个原则不会变,那就是this指的是,调用函数的那个对象. demo1: 此时函数运行的结果是 1 ,x是全局变量,因为匿名函数demo()是被window调用的,原始写法是window.demo(),因为demo()是被window调用的,所

URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)

引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. 1.  问题的引出 在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址. 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息为乱码,无法正确读取. 2. 乱码是如

【转】深入浅出 JavaScript 中的 this

Java 等面向对象的语言中,this 关键字的含义是明确且具体的,即指代当前对象.一般在编译期确定下来,或称为编译期绑定.而在 JavaScript 中,this 是动态绑定,或称为运行期绑定的,这就导致 JavaScript 中的 this 关键字有能力具备多重含义,带来灵活性的同时,也为初学者带来不少困惑.本文仅就这一问题展开讨论,阅罢本文,读者若能正确回答 JavaScript 中的 What ’s this 问题,作为作者,我就会觉得花费这么多功夫,撰写这样一篇文章是值得的. Java

理解JavaScript中的回调函数

理解回调函数,首先要知道在JavaScript中,函数也是对象,它可以赋值给变量,也可以作为参数传递给另一个函数.比如: var add=function(a,b){ console.log(a+b); }; //3 add(1,2); 这里定义了一个变量add,然后将一个匿名函数赋值给了这个变量: 接下来演示将函数作为参数传递给另一个函数,换句话说就是:将一个函数放在另一个函数(如 parent)的参数列表中,作为参数传递给parent,然后在parent函数体的某个位置执行它.其实这也就是回