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 逻辑表达式||/&&的更多相关文章

  1. javascript特殊运算符(in,instanceof,typeof,delete,void,逗号)

    in运算符                 in运算符要求其左边的运算数是一个字符串,或可以被转换为字符串,右边的运算数十一个对象或数组.如果该 运算符左边的值是右边对象的一个属性名,则返回true, ...

  2. 关系运算符:instanceof

    关系运算符:instanceof a instanceof Animal;(这个式子的结果是一个布尔表达式) a为对象变量,Animal是类名. 上面语句是判定a是否可以贴Animal标签.如果可以贴 ...

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

    在JavaScript中,运算符“typeof”和“instanceof”都可以用来判断数据的类型,那么这两个运算符有什么不同之处呢? 差异一:使用方式不同. 最明显的差异就是这两个运算符的使用方式了 ...

  4. instanceof typeof

    //清单 6. JavaScript instanceof 运算符代码 function instance_of(L, R) {//L 表示左表达式,R 表示右表达式 var O = R.protot ...

  5. javascript instanceof,typeof的区别

    区分string 与 String的区别 为什么结果会是false呢? <script type="text/javascript"> var aColors = [& ...

  6. instanceof, typeof, & Object.prototype.toString

    /** * * @authors Your Name (you@example.org) * @date 2016-11-18 09:31:23 * @version $Id$ */instanceo ...

  7. js的in运算符与instanceof运算符

    in运算符:希望他的左操作数是一个字符串或可以转换为字符串,希望他的右操作数是一个对象.如果右操作数的对象拥有一个名为左操作数值的属性名,那么表达式返回true. var point= {x:1,y: ...

  8. JavaScript中instanceof与typeof运算符的用法及区别详细解析

    JavaScript中的instanceof和typeof常被用来判断一个变量是什么类型的(实例),但它们的使用还是有区别的: typeof 运算符 返回一个用来表示表达式的数据类型的字符串. typ ...

  9. typeof和instanceof

    JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前 ...

随机推荐

  1. SharePoint 离线安装

    SharePoint 离线安装,主要是AppFrabic服务出错,可以使用下来命令: "X:\WindowsServerAppFabricSetup_x64.exe" /i Cac ...

  2. 【穿插】Python基础之文件、文件夹的创建,对上一期代码进行优化

    在上一期妹子图的爬虫教程中,我们将图片都保存在了代码当前目录下,这样并不便于浏览,我们应该将同一个模特的图片都放在一个文件夹中. 今天我们就简单讲一下Python下如何创建文件.文件夹,今后就可以用上 ...

  3. jquery 操作动态添加的元素

    动态添加的元素,无法侦听到事件,写法如下: 使用函数.on 格式为: $(父元素).on('event','selector',function(){ //do something }) 例如 < ...

  4. python系列三:python3运算符

    '''python 没有自增运算符python 中,变量是以内容为基准而不是像 c 中以变量名为基准,所以只要你的数字内容是5,不管你起什么名字,这个变量的 ID 是相同的,同时也就说明了 pytho ...

  5. ASP-Server.Transfer-Response.Redirect

    Server.Transfer Transfer 方法把一个 ASP 文件中创建的所有状态信息(所有 application/session 变量以及所有 request 集合中的项目)发送(传输)到 ...

  6. Dev GridControl 小结3

    Dev GridControl 小结 时间 2014-03-26 19:24:01  CSDN博客 原文  http://blog.csdn.net/jiankunking/article/detai ...

  7. VMware Workstation 虚拟机纯 Linux 终端如何安装 VMware Tools ?

    VMware Workstation 虚拟机纯 Linux 终端如何安装 VMware Tools ? 1.首先在虚拟机设置里面设置一个共享文件夹 2.在虚拟机菜单栏中选择 VMware Tools ...

  8. JS获取短信验证码60秒

    <script language="javascript">    function get_mobile_code(){        $.post("{{ ...

  9. JS上传图片预览及图片限制

    HTML代码: <form action="__SELF__" method="post" enctype='multipart/form-data'&g ...

  10. Linux中权限管理之sudo权限

    1.suodo的操作对象是系统命令 2.root把本来只能是超级用户执行的命令赋予普通用户执行 3.设置sudo权限 命令:visudo 找到: ## Allow root to run any co ...