||或和&&且的高级用法,以及隐式转换和显示转换。

或的高级用法

console.log(true || true); //   true
console.log(true || false); //  true
console.log(false || true); //   true
console.log(false || false); //  false
console.log(0 || false); //  false
console.log(false || 0); //  0
console.log(0 || true); //true
console.log(true || 0); //true
console.log(1 || false); //1
console.log(false || 1); //1
console.log(1 || true); //1
console.log(true || 1); //true

总结:0 为false,1为true ,判断语句中,只要有一个是true,则返回的结果为true,否则为false。执行顺序为从上至下,从左至右,如果找到一个结果为true则返回true并且不再往下执行,如果第一个结果为false,则继续往下找,知道true为止,返回true,如果没有true,则返回最后一个false的结果(0或false)

且的高级用法

console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false
console.log(0 && false); // 0
console.log(false && 0); // false
console.log(0 && true); //0
console.log(true && 0); //0
console.log(1 && false); //false
console.log(false && 1); //false
console.log(1 && true); //true
console.log(true && 1); //1
console.log(2 && true); //true
console.log(true && 2); // true
console.log("" && true); // ""
console.log(true && ""); // ""
console.log("a" && true); // true
console.log(true && "a"); // "a"
console.log({} && true); // true
console.log(true && {}); // {}
console.log([] && true); // true
console.log(true && []); // []
console.log(null && true); // null
console.log(true && null); // null
console.log(undefined && true); // undefined
console.log(true && undefined); // undefined
console.log(NaN && true); // NaN
console.log(true && NaN); // NaN

总结:0为false,1为true,判断语句中,必须两个条件都为true,返回true,否则返回false,执行顺序自上而下,自左至右,第一个条件不满足时直接返回左边的值false或0,不再往下执行,第一个条件为true或者1时,继续看第二个条件,如果第二个条件也为true或者1时,则返回右边的值true或1,如果第二个条件不满足时,则返回右边的值false或0,

如果是数值进行比较非0即为true,就是说上面的1都可以替换成非0的任何数字,结果不变。

如果是字符进行比较的话非""空即为true,就是说""空的话在执行中会转换成false按照false的规则执行,但是结果会显示成""空字符,如果字符""里面有任何东西的话会按照true来执行,但是结果还是显示原来的字符

如果是数组[],对象,函数{}进行判断的时候会隐式转换成true,在运行的时候遵循true的规则,但是结果还是以前的表达方式
          如果是null,undefined,NaN进行判断的话,隐式转换时,全部按照false的规则进行运算,但是结果依然会是原来的表达方式,

隐士转换与显示转换(简单描述)
这时顺便说一下,在什么情况下,会进行隐士转换?
就是在进行下面这些运算符操作的时候会进行隐式转换:
算数运算符:+ - * / %
比较运算符:== === != !== < > <= >= ?
逻辑运算符:&& || !
隐式转换中,在运算的时候会发生转换,在运算完成之后,根据判断的结果,显示原来的值,不会改变原值
而显式转换呢?
是手动进行转换,会改变要转换的值,再进行运算,一目了然,能看出来,而我们往往犯错就是在隐式转换当中

记得好好敲代码。

原文地址:https://www.cnblogs.com/goodgoodstudyV/p/12302006.html

时间: 2024-10-07 21:06:16

||或和&&且的高级用法,以及隐式转换和显示转换。的相关文章

C++模板之隐式实例化、显示实例化、隐式调用、显示调用和模板特化详解

代码编译运行环境:VS2012+Debug+Win32 模板的实例化指函数模板(类模板)生成模板函数(模板类)的过程.对于函数模板而言,模板实例化之后,会生成一个真正的函数.而类模板经过实例化之后,只是完成了类的定义,模板类的成员函数需要到调用时才会被初始化.模板的实例化分为隐式实例化和显示实例化. 对函数模板的使用而言,分为两种调用方式,一种是显示模板实参调用(显示调用),一种是隐式模板实参调用(隐式调用).对于类模板的使用而言,没有隐式模板实参和显式模板实参使用的说法,因为类模板的使用必须显

【C++自我精讲】基础系列五 隐式转换和显示转换

0 前言 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换. 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换. 1 隐式转换 定义:隐式转换是系统跟据程序的需要而自动转换的. 1)C++类型(char,int,float,long,double等)的隐式转换: 算术表达式隐式转换顺序为: 1.char - int - long - double 2.float - double //1)算术表达式 int m = 10; double n = m;//n = 10

ahjesus自定义隐式转换和显示转换

implicit    关键字用于声明隐式的用户定义类型转换运算符. 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 参考戳此 explicit    关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符. 参考戳此 有一点要注意的是,一个类中不能同时写显式和隐式声明,只能是其中一个. 但是如果声明了隐式的转换,那么其对应的显示转换也会自动提供. 如果声明了显式转换,其对应的隐式转换不会提供的.  ahjesus自定义隐式转换和显示转换

Appium隐式等待和显示等待

https://github.com/appium/appium/blob/master/docs/en/commands/session/timeouts/implicit-wait.md 隐式等待:设置一个超时时间,服务端(Appium)在这个时间内会去不断寻找元素,超时找不到时就会报错,他是全局性的driver.implicitly_wait(10) # 10秒driver.manage().timeouts().implicitlyWait(6, TimeUnit.SECONDS); 显

游标(隐式游标与显示游标)

游标的概念:    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库.这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率.游标有两种类型:显式游标和隐式游标.在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和DML操作,系统都会使用一个隐式游标.但是如果要提取

selenium 的隐式等待和显示等待

等待 现在的网页越来越多采用了 Ajax 技术,这样程序便不能确定何时某个元素完全加载出来了.如果实际页面等待时间过长导致某个dom元素还没出来,但是你的代码直接使用了这个WebElement,那么就会抛出NullPointer的异常. 为了避免这种元素定位困难而且会提高产生 ElementNotVisibleException 的概率.所以 Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待. 隐式等待是等待特定的时间,显式等待是指定某一条件直到这个条件成立时继续执行. 1.

jq 筛选选择器,方法,隐式迭代 元素显示隐藏 淡入淡出 上拉下拉 动画 类名操作以及样式

jQuery 地址:https://jquery.com/ 历史版本:http://code.jquery.com/ 1.x:兼容 IE678 低版本浏览器 2.x:不兼容 IE678 低版本浏览器 3.x:不兼容 IE678 低版本浏览器,官方主要维护版本 入口函数 // 一下两种入口函数 相当于原生中的 DOMContentLoaded $(function () { /* DOM加载完成的入口*/ }) $(document).ready(function(){ /* DOM加载完成的入口

C#隐式转换和显示转换举例--C#基础

高精度的数据类型转换为低精度的数据类型是显示转换,低精度的转换为高精度的是隐式转换. 温馨提示:不能说强制类型转换是从低精度到高精度. int a=666;float b=(float)a: 由a到b的转换是低精度到高精度的转换,为隐式转换,但是也加了强制转换(float),当然不加也是对的. 1.隐式转换示例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using

Android开发实践:实战演练隐式Intent的用法

本文通过完成一个实战任务,来掌握Android开发中隐式Intent的用法. 任务:假设我们已经实现了一个视频播放器(PlayerActivity),我们希望能把它注册到系统中,当用户点击本地视频或者在线视频时,能启动这个视频播放器. (假设该类的全路径为:com.jhuster.videoplayer.PlayerActivity) [注]:本文完整的示例代码请到我的Github下载,地址:VideoPlayer 1. 什么是隐式Intent? Intent是Android中比较重要的组件,常