• js (逻辑运算-冒泡捕获)遇到的问题浅谈


    最近在看小程序在看文档的时候,遇到一些基础的js知识,翻找了资料之后记录下来,留待以后查看

    事件冒泡与捕获

    冒泡从底部往上,而捕获恰恰相反从上往下。

    当终止时冒泡和捕获都取当前的`监听事件`《不知道咋形容,就是当前运行的,截止到这里为止》

    栗子

    capture-bind:捕获
    bind:冒泡

    <view id="outer" bind:touchstart="handleTap1" capture-bind:touchstart="handleTap2">
        outer view
      <view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4">
        inner view
      </view>
    </view>
    当我点击 inner view 时候,这个时候 顺序应该是
    handleTap2
    handleTap4
    handleTap3
    handleTap1
    先捕获 2 4 然后 冒泡 3 1

    | (按位或) 和 ^ (按位异或)

    两者在一定程度上是相同的,都是有一个值为真值的时候,就返回`true`

    MDN上进行了相应的描述,

    按位或: 将任一数值 x 与 0 进行按位或操作,其结果都是 x。将任一数值 x 与 -1 进行按位或操作,其结果都为 -1。

    按位异或:对每一对比特位执行异或(XOR)操作。当 a 和 b 不相同时,a XOR b 的结果为 1。

    主要的是还是 ~按位非

    有一个公式  -(x + 1)

    栗子:

    ~1  等于 -(1+1)  return -2
    
    ~~ 1 等于 -(-(1+1) + 1)  return 1
    
    ~2  等于  -(2 + 1) return -3
    
    ~~2 等于  -(-(2+1) + 1) return 2
    
    一般与 indexOf 配合使用 
    
    var str = 'rawr';
    var searchFor = 'a';
    
    // 这是 if (-1*str.indexOf('a') <= 0) 条件判断的另一种方法
    if (~str.indexOf(searchFor)) {
      // searchFor 包含在字符串中
    } else {
      // searchFor 不包含在字符串中
    }
    
    找不到返回 -1 那么 -(-1 +1)  return -0  ;
    -0 自动转换为 -1
    
    或者取数值,把字符转换为数值,js中有隐式转换,在公式中 +1 * -1 那么该值就自动转换为number 

    逻辑运算

    与 &&  : 

    expr1 && expr2   如果expr1返回false 那么返回expr1,否则返回 expr2

    与布尔值一起使用时,如果两个操作数都为true&&返回true,否则返回false

    需要注意的是:

    a1=true && true       // t && t 结果为 true
    a2=true && false      // t && f 结果为 false
    a3=false && true      // f && t 结果为 false
    a4=false && (3 == 4)  // f && f 结果为 false
    a5="Cat" && "Dog"     // t && t 结果为 Dog  当两个值都为true的时候,取后面的值
    a6=false && "Cat"     // f && t 结果为 false
    a7="Cat" && false     // t && f 结果为 false
     

    或 || :

    expr1 || expr2  如果expr1 返回true那么就返回expr1 否则就返回expr2

    与布尔值一起使用时,如果任意一个操作数为true||返回true

    需要注意的是:跟上面且有个相反的取值

    o1=true || true       // t || t 结果为 true
    o2=false || true      // f || t 结果为 true
    o3=true || false      // t || f 结果为 true
    o4=false || (3 == 4)  // f || f 结果为 false
    o5="Cat" || "Dog"     // t || t 结果为 Cat
    o6=false || "Cat"     // f || t 结果为 Cat
    o7="Cat" || false     // t || f 结果为 Cat

    非 ! 逻辑非:

    如果为true 返回false,false返回true

    栗子:

    n1 = !true  //   !t   结果为false

    n2 = !false  //    !f   结果为true

    n3 = !"Cat"  // !t  结果为 false

    null;
    NaN;
    0;
    空字符串("");
    undefined
    
    这些值都会返回false

     逗号操作符

    mdn解释:对它的每个操作数求值(从左到右),并返回最后一个操作数的值

    以前从来没有用过这种方式,来个栗子

    var x = 0;
    x ++,x
    返回 1
    在函数中如果要 return 的话那么就使用(x++,x),调用该函数还是会返回1

     感觉非常好用,省了几个代码

     

  • 相关阅读:
    Spacemacs配置yasnippe插件
    设置SSH只允许指定IP才能访问
    firewall的规则设置与命令(白名单设置)
    Docker存储驱动介绍
    elasticsearch启动常见错误
    ES系列:解决Exception in thread “main” java.nio.file.AccessDeniedException: /usr/local/elasticsearch
    ELK6.3.2搭建配置文件篇(filebeat版)
    Linux:sudo,没有找到有效的 sudoers 资源。
    Filebeat安装及使用
    elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统
  • 原文地址:https://www.cnblogs.com/damai/p/8385388.html
Copyright © 2020-2023  润新知