我有一个 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/