比较运算符in/instanceof/typeof 逻辑表达式||/&&
1.比较运算符in
in运算符希望它的左侧操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象,
如果右侧的对象拥有一个名为左侧操作数值的属性名,那么表达式返回true,
eg:var arr = {x:1,y:2};
"x" in arr ==>true
"toString" in arr ==>对象继承了toString()方法
var data = [1,2,3];
"0" in data ===>true
3 in data ===>false 数组的下标是以0开始的,下标只到2
2.比较运算符instanceof
instanceof运算符希望左侧操作数是一个对象,右操作数标识对象的类
如果左侧的对象是右侧类的实例则返回true,js中对象的类是通过初始化他们的构造函数来定义的
var a = [];
function f(){};
var o = new f();
o.constructor == f; o.__proto__.constructor == f; //true
f instanceof Function;//true
f instanceof Object;//true
a instanceof Array;//true
3.typeof运算符
typeof是一元运算符,放在其单个操作数前面,操作数可以是任意类型,返回值为表示操作数类型的一个字符串,
任意值在typeof运算后的返回值
| x | typeof x||typeof(x) |
| undefined | "undefined" |
| null | "object" |
| true或false | "boolean" |
| 任意数字或NaN | "number" |
| 任意字符串 | "string" |
| 任意函数 | "function" |
| 任意内置对象(非函数) | "object" |
| 任意宿主对象 | "由编译器各自实现的字符串" |
4.逻辑表达式
4.1 && 表达式
1.当操作数都是布尔值的时候,"&&"对两个值执行布尔与(and)操作,只有在第一个操作和第二个操作都是true的时候,它才返回true
2."&&"可以对假值(false、null、undefined、0、-0、NaN、"")和真值(除假值外的都是真值)进行布尔与(and)操作,
先会对"&&"的左侧进行操作,如果左侧是假值,整个表达式肯定也是假值,因此这个表达式就简单的返回左侧的这个值,不会对右侧计算,
反之如果左侧是真值,则整个表达式的计算结果依赖于右侧,右侧是真值这个结果就是真值,否则就是假值,并返回右侧的值作为整个表达式的结果
"&&"的这种特性称为"短路",也经常利用这种特性来有条件的执行代码
eg: if(a==b) start();
(a==b) start();//同上
一般当"&&"的右侧有副作用是要小心如(赋值、递增、递减等),因为这些操作的执行与否都依赖与"&&"的左侧 false&&a++(a++就不会执行)
4.2 ||表达式
"||"对两个操作做 布尔或(or)运算,只要有一个操作时真值,则返回真值,当且仅当所有操作都是假值是才会返回假值;
先会对"||"的左侧进行操作,如果左侧是真值,整个表达式肯定也是真值,因此这个表达式就简单的返回左侧的这个值,不会对右侧计算,
反之如果左侧是假值,则整个表达式的计算结果依赖于右侧,右侧是真值这个结果就是真值,否则就是假值,并返回右侧的值作为整个表达式的结果
比较运算符in/instanceof/typeof 逻辑表达式||/&&的更多相关文章
- javascript特殊运算符(in,instanceof,typeof,delete,void,逗号)
in运算符 in运算符要求其左边的运算数是一个字符串,或可以被转换为字符串,右边的运算数十一个对象或数组.如果该 运算符左边的值是右边对象的一个属性名,则返回true, ...
- 关系运算符:instanceof
关系运算符:instanceof a instanceof Animal;(这个式子的结果是一个布尔表达式) a为对象变量,Animal是类名. 上面语句是判定a是否可以贴Animal标签.如果可以贴 ...
- JavaScript中“typeof”运算符与“instanceof”运算符的差异
在JavaScript中,运算符“typeof”和“instanceof”都可以用来判断数据的类型,那么这两个运算符有什么不同之处呢? 差异一:使用方式不同. 最明显的差异就是这两个运算符的使用方式了 ...
- instanceof typeof
//清单 6. JavaScript instanceof 运算符代码 function instance_of(L, R) {//L 表示左表达式,R 表示右表达式 var O = R.protot ...
- javascript instanceof,typeof的区别
区分string 与 String的区别 为什么结果会是false呢? <script type="text/javascript"> var aColors = [& ...
- instanceof, typeof, & Object.prototype.toString
/** * * @authors Your Name (you@example.org) * @date 2016-11-18 09:31:23 * @version $Id$ */instanceo ...
- js的in运算符与instanceof运算符
in运算符:希望他的左操作数是一个字符串或可以转换为字符串,希望他的右操作数是一个对象.如果右操作数的对象拥有一个名为左操作数值的属性名,那么表达式返回true. var point= {x:1,y: ...
- JavaScript中instanceof与typeof运算符的用法及区别详细解析
JavaScript中的instanceof和typeof常被用来判断一个变量是什么类型的(实例),但它们的使用还是有区别的: typeof 运算符 返回一个用来表示表达式的数据类型的字符串. typ ...
- typeof和instanceof
JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前 ...
随机推荐
- 《从零开始学Swift》学习笔记(Day 46)——下标重写
原创文章,欢迎转载.转载请注明:关东升的博客 下标是一种特殊属性.子类属性重写是重写属性的getter和setter访问器,对下标的重写也是重写下标的getter和setter访问器. 下面看一个示例 ...
- IIPP迷你项目(二)"Guess the Number!"
本来这个程序是早就编完了的,一直没时间发布博客.时至今日已时隔多天,也算是复习一下事件驱动型编程的过程吧. 1 事件驱动型编程 本质上这次的作业是披着猜数字皮的图形化界面编程,好在 simplegui ...
- org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception
RabbitMQ 报出的错! org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException ...
- coursera 《现代操作系统》 -- 第八周 存储模型(2)
名词解释 页面: 页面大小: 页表: 页表项: 以上名词解释见: coursera <现代操作系统> -- 第七周 存储模型(1) 页表项大小: 问:以上是怎么计算出来的? 32位指什么? ...
- distinct与NULL在count的注意事项
select * from errorinfo ) from errorinfo select distinct info from errorinfo select count(distinct i ...
- 【python】-- Django ORM(基础)
Django ORM(基础) Django 框架十分强大,自带数据库操作功能.Django 跟 SQLAchemy 一样,也是通过ORM(Object Relational Mapping,关系对象映 ...
- Oracle中的in参数的个数限制
遇到了这个问题 “oracle中in参数个数限制”,这里记录下, in后括号中的参数个数有限制,Oracle 9i 中个数不能超过256,Oracle 10g个数不能超过1000. 当in的个数大于1 ...
- qt 如何给图元安装一个场景事件过滤器?
void QGraphicsItem::installSceneEventFilter(QGraphicsItem *filterItem) class LabCrossEvent : public ...
- ThinkPHP的create方法的一系列操作
1.数据操作状态 create方法的第二个参数可以指定数据的操作状态,默认是自动判断的(写入[Model:MODEL_INSERT或者1].更新[Model:MODEL_UPDATE或者2].也可以自 ...
- matlab学习笔记之求解线性规划问题和二次型问题
一.线性规划问题 已知目标函数和约束条件均为线性函数,求目标函数的最小值(最优值)问题. 1.求解方式:用linprog函数求解 2.linprog函数使用形式: x=linprog(f,A,b) ...