在阅读缩小的Javascript时,我应该如何阅读带有逗号的返回语句&;,和| |运算符?
我有以下源代码:在阅读缩小的Javascript时,我应该如何阅读带有逗号的返回语句&;,和| |运算符?,javascript,minify,Javascript,Minify,我有以下源代码: function findMessageErrors(btn) { var error = ""; var message = $(btn).parent().siblings().find("textarea[name='message']").val(); if (message === "") { error += "*Please enter a message.<br/>"; } if (!$(btn
function findMessageErrors(btn) {
var error = "";
var message = $(btn).parent().siblings().find("textarea[name='message']").val();
if (message === "") {
error += "*Please enter a message.<br/>";
}
if (!$(btn).parent().siblings().find('input[name="agree"]').prop('checked')) {
error += "*Please agree.<br/>";
}
return error;
}
函数findMessageErrors(btn){
var误差=”;
var message=$(btn.parent().sibbins().find(“textarea[name='message']).val();
如果(消息==“”){
错误+=“*请输入消息。
”;
}
if(!$(btn).parent().sides().find('input[name=“agree”]')).prop('checked')){
错误+=“*请同意。
”;
}
返回误差;
}
这会缩小。缩小后,在Chrome开发工具源选项卡中显示如下:
function findMessageErrors(btn) {
var error = "";
return "" === $(btn).parent().siblings().find("textarea[name='message']").val() && (error += "*Please enter a message.<br/>"),
$(btn).parent().siblings().find('input[name="agree"]').prop("checked") || (error += "*Please agree.<br/>"),
error
}
函数findMessageErrors(btn){
var误差=”;
返回“===$(btn).parent().sibbins().find”(“textarea[name='message']).val()&&(error+=”*请输入消息。
),
$(btn).parent().sides().find('input[name=“agree”]”).prop(“checked”)| |(error+=“*请同意。
”),
错误
}
我理解逗号运算符如何“按顺序运行一系列表达式,然后返回最后一个表达式的结果”。但我很难理解那些OR运算符是如何构建在缩小代码中返回的字符串的
有没有人能用一种有用的方式把它大声读出来,帮助我理解它是如何工作的?我想我看不出源代码中的两个独立IF语句是如何缩小为一系列&&then | |的。我不想每次想了解精简代码如何工作的逻辑时都必须查找源代码。如果可能,使用而不是尝试阅读精简代码
但这并不意味着你不想知道如何阅读复杂的语句;有时人类会写它们。:-)
我做了一些格式化和内联注释来解释:
function findMessageErrors(btn) {
var error = "";
return (
(
"" === $(btn).parent().siblings().find("textarea[name='message']").val()
&&
// This only runs if the === above is true, because of the &&
(error += "*Please enter a message.<br/>")
)
,
( // This runs regardless of the above
$(btn).parent().siblings().find('input[name="agree"]').prop("checked")
||
// This only runs if prop("checked") returned a falsy value, because of ||
(error += "*Please agree.<br/>")
)
,
( // This runs regardless, of the above...
// ...and this is the ultimate value of the return
error
)
);
}
函数findMessageErrors(btn){
var误差=”;
返回(
(
“”=$(btn).parent().sibbins().find(“textarea[name='message']).val()
&&
//由于&&
(错误+=“*请输入消息。
”)
)
,
(//无论上述情况如何,此操作都会运行
$(btn).parent().sibbins().find('input[name=“agree”]”).prop(“选中”)
||
//只有当prop(“checked”)返回一个falsy值时,才会运行此操作,因为||
(错误+=“*请同意。
”)
)
,
(//无论上述情况如何,此操作都会运行。。。
//…这就是回报的最终价值
错误
)
);
}
之所以添加外部的()
,是因为return
后面的换行符会触发自动分号插入。为了解释清楚,添加了其他()
。在可能的情况下,使用而不是尝试读取缩小的代码
但这并不意味着你不想知道如何阅读复杂的语句;有时人类会写它们。:-)
我做了一些格式化和内联注释来解释:
function findMessageErrors(btn) {
var error = "";
return (
(
"" === $(btn).parent().siblings().find("textarea[name='message']").val()
&&
// This only runs if the === above is true, because of the &&
(error += "*Please enter a message.<br/>")
)
,
( // This runs regardless of the above
$(btn).parent().siblings().find('input[name="agree"]').prop("checked")
||
// This only runs if prop("checked") returned a falsy value, because of ||
(error += "*Please agree.<br/>")
)
,
( // This runs regardless, of the above...
// ...and this is the ultimate value of the return
error
)
);
}
函数findMessageErrors(btn){
var误差=”;
返回(
(
“”=$(btn).parent().sibbins().find(“textarea[name='message']).val()
&&
//由于&&
(错误+=“*请输入消息。
”)
)
,
(//无论上述情况如何,此操作都会运行
$(btn).parent().sibbins().find('input[name=“agree”]”).prop(“选中”)
||
//只有当prop(“checked”)返回一个falsy值时,才会运行此操作,因为||
(错误+=“*请同意。
”)
)
,
(//无论上述情况如何,此操作都会运行。。。
//…这就是回报的最终价值
错误
)
);
}
之所以添加外部的
()
,是因为return
后面的换行符会触发自动分号插入。为了解释清楚,添加了其他()
。不阅读midified代码如何?它不是供人使用的。“我不想每次想了解精简代码如何工作的逻辑时都要查找源代码。”不要。使用源代码映射。以防不清楚,TJ指的是您可以在此处找到描述的技术:。不确定为什么要投否决票。。我只是想知道它是如何运作的。(现在我知道这是短路评估..多亏了这篇文章的回复)不读MIDI代码怎么样?它不是供人使用的。“我不想每次想了解精简代码如何工作的逻辑时都要查找源代码。”不要。使用源代码映射。以防不清楚,TJ指的是您可以在此处找到描述的技术:。不确定为什么要投否决票。。我只是想知道它是如何运作的。(现在我知道这是短路评估..感谢对这篇文章的回复)非常感谢。你的评论帮助我了解了正在发生的事情。我知道源代码映射并将使用它,但我只是认为这是我应该知道的关于Javascript的东西。再次感谢。为了进一步说明,这里每个语句中的“魔力”的核心是用于&&
和|
。非常感谢。你的评论帮助我了解了正在发生的事情。我知道源代码映射并将使用它,但我只是认为这是我应该知道的关于Javascript的东西。再次感谢。为了进一步说明,这里每个语句中的“魔力”的核心是用于&&
和|
。