Javascript 短路未返回正确的值

标签 javascript php jquery

我有一个 js 变量,它是通过 php 页面上的 php 生成的:

<script type="text/javascript">
   var shadeData = <?php echo $formattedShadeData; ?>;
</script>

这个变量只会在一个页面上定义,所以我想防止其他页面加载时抛出错误。在我的一个 JavaScript 文件中,如果变量尚未定义,我想停止代码运行,所以我一直在尝试:

var shadeData = shadeData || null;

if(!shadeData){ return false; }

但是,这不起作用,我仍然收到“shadeData 未定义”的消息。这些行下面的代码中有几个函数使用该变量,但理想情况下,当第二行返回 false 时,这不会运行。

最佳答案

您不能在 JavaScript 程序的全局/顶级范围内使用 return

稍作调整后,您的想法应该可以正常工作:将所有代码包装在 IIFE 中.

// If shadeData is already defined and falsey, this is unnecessary. But included for clarity.
var shadeData = shadeData || null;

(function () {
    if (!shadeData) {
        return;
    }
    // From now on within this function, shadeData is truthy.
}());

// shadeData is not necessarily truthy down here.
console.log('shadeData:', shadeData);

在现实世界中,这通常是通过有条件调用的主入口函数(通常名为 init)来完成的。

function init() {
    // I am only run when shadeData is truthy.
}
if (shadeData) {
    init();
}

关于Javascript 短路未返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41352957/

相关文章:

javascript - 在全局范围内声明的函数是闭包吗?

javascript - JavaScript 对象有全序吗?

php - 使用正则表达式从 HTML 文本中提取文件名

javascript - 在 JS 和 PHP 中匹配 sec256k1 key

jquery 时间屏蔽编辑

javascript - 为什么我的 XHR 的 statusText 是空的?

javascript - Date.toLocaleString() 返回无效的语言标签 : en_GB but Java. util.Locale 类返回 en_GB 英国语言环境

php - 如何使用 mysql 查询在我的数据库中仅查找特定的表和特定的列名

javascript - 如何使用jquery获取json数据

javascript - 淡出后的进度