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中见过,还有不明白是怎么回事

  • 相关阅读:
    hdu_2224_The shortest path(dp)
    hdu_4824_Disk Schedule(dp)
    hdu_5680_zxa and set(想法题)
    hdu_5683_zxa and xor(非正解的暴力)
    hdu_1429_胜利大逃亡(续)(BFS状压)
    hdu_1254_推箱子(双BFS)
    hdu_1969_pie(二分)
    hdu_2446_Shell Pyramid(数学,二分)
    hdu_2141_Can you find it?(二分)
    5.2 nc + JMX查看分布式程序数据
  • 原文地址:https://www.cnblogs.com/chenmenghui/p/6357458.html
Copyright © 2011-2022 走看看