【问题标题】:Dealing with a non-existent variable in JavaScript处理 JavaScript 中不存在的变量
【发布时间】:2016-03-14 19:59:13
【问题描述】:

我正在使用 mustache 从一些 PHP 代码中加载一个属性,如下所示:

PHP:

$data['foo'] = getFooAsJSON();

JavaScript:

var bar = <%&foo%>;

这里的问题是,当 有时不存在时,JS 变为:

var bar = ;

抛出语法错误。我想将 bar 指定为 null 作为后备,但鉴于 &lt;%&amp;foo%&gt; 没有返回任何内容,我不确定如何在不调用语法错误的情况下执行此操作。

有什么想法吗?

【问题讨论】:

    标签: javascript mustache


    【解决方案1】:

    名称getFooAsJSON 表明它返回JSON,这是一种文本符号,因此返回一个字符串。该字符串不能为空且为有效 JSON;它必须有东西

    如果没有可返回的内容,我建议返回"null",它是有效的 JSON 并且(因此)也是有效的 JavaScript。然后你会得到

    var bar = null;
    

    ...在你的 JavaScript 中。

    【讨论】:

    • 这是最正确的方法——不要试图修复你在页面中写的内容,修复标榜自己返回 JSON 的函数总是返回有效的 JSON。
    【解决方案2】:

    您可以为您的 PHP 请求设置一个默认参数。

    PHP v5.3 及更高版本

    $data['foo'] = getFooAsJSON() ?: 'null';
    

    PHP v5.2 及更低版本

    $jsonData = getFooAsJSON();
    
    $data['foo'] = $jsonData ? $jsonData : 'null';
    

    感谢 T.J. Crowder 提供有关有效 JSON 的注释。

    【讨论】:

    • $data['foo'] = getFooAsJSON() ?: '""';
    • @NinaScholz:好电话,忘了那些 :)
    • @T.J.CrowderL:我同意你的“空”论点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 2014-07-24
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多