zoukankan      html  css  js  c++  java
  • $this->imageH || $this->imageH = $this->fontSize * 2.5的意思

    $this->imageH || $this->imageH = $this->fontSize * 2.5;

    之前在thinkphp的验证码模块中看到$this->imageH || $this->imageH = $this->fontSize * 2.5,虽然知道了是什么意思,但不知道为什么要这样写,还一直以为这是一个类特有的结构……现在终于搞明白了。居然是一个运算符优先度的问题……
    一开始我认为因为赋值运算符'='优先度低于你逻辑运算符'||',所以,$a||$a是什么鬼……
    今天才看到**尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a。 **
    照此理解,上式以||为分隔符分为前后两个部分。

    • 如果$this->imageH为空,则这部分判断为假,因为是||,所以继续下半部分的赋值运算。
    • 如果$this->imageH有值,则这部分判断为真,然后跳过此句赋值部分。

    var name = obj.name || '--';

    一眼望过去还以为是和上面的那条一样的。前些日子无意间在php写了类似于下一句,结果……
    好吧,这才知道js和php在这块是不一样的。

    前一种方法好多种语言都支持,叫“运算符的短路”;后者我在js中见过,还有不明白是怎么回事

  • 相关阅读:
    windows10安装pycharm,以及pycharm教程和破解码
    windows 10安装python3和python2
    Git之仓库管理
    Python操作 Excel表格
    ansible 基础操作
    Flask-Migrate
    flask-script
    flask-sqlalchemy
    基于数字证书的二次登录认证流程
    摘录:识别系统原理(转)
  • 原文地址:https://www.cnblogs.com/chenmenghui/p/6357458.html
Copyright © 2011-2022 走看看