使用jQuery的水印插件,我試圖jslint並儘量減少函數,但我遇到過我從未見過的語法,其中有真正應該是一個表達式的表達式轉讓或函數調用:解釋&&在JavaScript中的簡寫
(function($) {
$.fn.watermark = function(css, text) {
return this.each(function() {
var i = $(this), w;
i.focus(function() {
w && !(w=0) && i.removeClass(css).data('w',0).val('');
})
.blur(function() {
!i.val() && (w=1) && i.addClass(css).data('w',1).val(text);
})
.closest('form').submit(function() {
w && i.val('');
});
i.blur();
});
};
$.fn.removeWatermark = function() {
return this.each(function() {
$(this).data('w') && $(this).val('');
});
};
})(jQuery);
我在下面幾行特別感興趣:
w && !(w=0) && i.removeClass(css).data('w',0).val('');
和
!i.val() && (w=1) && i.addClass(css).data('w',1).val(text);
有人可以解釋這種簡寫並重寫這些函數,以便我可以比較它們以更好地理解速記本身嗎?
謝謝。
呃,單字母局部變量。 – BoltClock 2010-10-04 21:57:18