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

  • 相关阅读:
    PHP
    优秀网址
    客户关系管理系统CRM
    面试题
    练习并熟练掌握交互式 SQL 语言
    嵌入式的SQL程序设计
    数据库总结
    JDBC
    玩转Android之Drawable的使用
    Android开发之Activity转场动画
  • 原文地址:https://www.cnblogs.com/chenmenghui/p/6357458.html
Copyright © 2011-2022 走看看