zoukankan      html  css  js  c++  java
  • 对于a 可以同时 == 1 && == 2 && == 3吗的个人详解

    类型转换时的劫持
      首先我们要知道,JS类型转换只有以下3种情况,分别是:

    • 转换为布尔值
    • 转换为数字
    • 转换为字符串

    转换为原始类型

    其算法如下:

    1. 如果已经是 原始类型,则返回当前值;
    2. 如果需要转 字符串 则先调用toString()方法,如果此时是 原始类型 则直接返回,否则再调用valueOf()方法并返回结果;
    3. 如果不是 字符串,则先调用 valueOf()方法,如果此时是 原始类型 则直接返回,否则再调用toString()并返回结果;
    4. 如果没有 原始类型 返回,则抛出 TypeError类型错误;

    答案如下:

     1 ==会进行隐式类型转换
     2 
     3 var a = {
     4     arr : [3,2,1],
     5     toString () {
     6         return this.arr.pop()
     7     }
     8 }
     9 if (a == 1 && a == 2 && ab == 3){
    10     console.log('成功了')
    11 }
    12 
    13 
    14 var b = {
    15     arr : [3,2,1],
    16     toString () {
    17         return this.arr.pop()
    18     }
    19 }
    20 if (b == 1 && b == 2 && b == 3){
    21     console.log('成功了')
    22 }
    23 
    24 var c = {
    25   i: 1,
    26   toString() {
    27     return c.i++;
    28   }
    29 }
    30 
    31 if( c == 1 && c == 2 && c == 3 ) {
    32   console.log(1);
    33 }
    34 
    35 
    36 Object.defineProperty(window, 'd', {
    37   get: function() {
    38     return this.value = this.value ? (this.value += 1) : 1;
    39   }
    40 });
    41 if (d == 1 && d == 2 && d == 3){
    42     console.log('成功了')
    43 }
  • 相关阅读:
    201275判断joomla首页的方法
    phpcms添加视频模块(未完)
    Joomla学习总结
    Joomla资源
    2012725 K2组件学习
    Apache Commons configuration使用入门
    linux学习(7)压缩与解压缩
    linux学习(6)redhat安装xwindow环境
    linux学习(5)iptables防火墙设置
    java实现的一个分页算法
  • 原文地址:https://www.cnblogs.com/chailuG/p/11215554.html
Copyright © 2011-2022 走看看