Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在布尔计算表达式中设置变量的优点_Javascript_Lazy Evaluation_Boolean Expression - Fatal编程技术网

Javascript 在布尔计算表达式中设置变量的优点

Javascript 在布尔计算表达式中设置变量的优点,javascript,lazy-evaluation,boolean-expression,Javascript,Lazy Evaluation,Boolean Expression,在上,第30-31行有一个代码示例,其中包括以下内容: function( originalEvent ) { !originalEvent && ( originalEvent = window.event ); 第二行似乎采用了许多快捷方式,这些快捷方式依赖于JavaScript在内部计算布尔表达式的方式。如果我理解正确,它的目的是在没有传递参数的情况下将originalEvent设置为window.event。其作用如下: if (!originalEvent) {

在上,第30-31行有一个代码示例,其中包括以下内容:

function( originalEvent ) {
  !originalEvent && ( originalEvent = window.event );
第二行似乎采用了许多快捷方式,这些快捷方式依赖于JavaScript在内部计算布尔表达式的方式。如果我理解正确,它的目的是在没有传递参数的情况下将
originalEvent
设置为
window.event
。其作用如下:

if (!originalEvent) {
  originalEvent = window.event;
}

使用MDN现场的施工有哪些优势

使用MDN现场的施工有哪些优势

看起来很酷

我本想说得简洁,但以下内容同样简短,一目了然:

function(originalEvent) {
  if(!originalEvent) originalEvent = window.event;
}

但请注意,他们的样本并不依赖于任何“内部”操作顺序或任何险恶的东西。操作符短路(这就是所谓的)是许多语言中定义良好且流行的一部分,Javascript只是其中的一个例子。您可以用C编写相同的精确语句,它会很好地工作。

与您建议的方法相比,MDN的方法没有任何完美的优势。这是风格的问题

你提到的所有方法都做了完全相同的事情


MDN的方式更“简洁”,但其他人更喜欢
if…else
语句,比如您为可读性目的而提到的语句。取决于具体情况,但我认为在大多数情况下,选择一个或另一个是风格的问题,不一定。

要增加更多的模糊性,您也可以使用

function(originalEvent) {
  originalEvent = originalEvent || window.event;
}
没有正确的方法可以做到这一点,而且它们都是完全有效的,我经常使用上面的方法,因为我认为它更容易阅读(尽管很多人会因为我这样做而对我挥拳)。
我还相信,您可以使用默认设置让所有方法通过大多数JSLint'er,因此这确实是一个风格问题。

根据您的问题,您似乎拥有所有工具来回答这个问题:)因为您显示的代码的所有三个版本都有相同的结果,所以它开始归结为:可读性,代码优化和开发人员首选项。您的最后一行代码并不等同于其他两行代码,只是为了记录。@Blindy:您能解释最后一行的不同之处吗?当然,即使您在
originalEvent
中有值,您也可以执行代码。在您看来,它似乎没有改变代码的含义,但它不是等价的。
function(originalEvent) {
  originalEvent = originalEvent || window.event;
}