JavaScript 中 && 简写的解释

2023-12-02

使用 jQuery 的水印插件,我尝试 jslint 并最小化函数,但我遇到了以前从未见过的语法,其中存在确实应该有赋值或函数调用的表达式:

(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('');

and

!i.val() && (w=1) && i.addClass(css).data('w',1).val(text);

有人可以解释这个简写并重写这些函数,以便我可以比较它们以更好地理解简写吗?

谢谢。


让我们将您所询问的每个陈述分解为它们的组成部分:

w && !(w=0) && i.removeClass(css).data('w',0).val('');
  • w - Is w“真的”? (检查!= 0在这种情况下)
  • !(w=0) - Set w to 0,取结果的相反值,因此&&链条继续
  • i.removeClass(css).data('w',0).val('')- 删除类,将数据设置为0清除该值。

!i.val() && (w=1) && i.addClass(css).data('w',1).val(text);
  • !i.val()- 输入内容是否为空?
  • (w=1) - Set w to 1
  • i.addClass(css).data('w',1).val(text);- 添加类,将数据设置为1并将文本设置为水印文本。

这两者都只是声明really减少代码,当然会牺牲可读性。如果您正在查看缩小版本,那么这是很常见的,如果您not这是原版,用沙拉叉追作者,在我看来,原版应该比这个更具可读性,尽管对于缩小版来说就可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 中 && 简写的解释 的相关文章

随机推荐

  • javascript中“=”的操作

    考虑下面的代码 var pub json general holis 12 10 2013 12 25 2013 12 26 2013 var holiday holis 12 02 2013 var pub json pub json g
  • 编辑和重新显示内容时强制刷新缓存

    我正在使用 asp net mvc 并且有一个显示项目的视图和一个允许编辑项目的视图 当用户提交编辑的项目时 它会将他们重定向到该项目的视图 由于项目视图正在被缓存 因此在重定向时不会反映更改 查看项目页面也可以内联编辑 然后提交按钮使用
  • 即使在文件名前面添加“r”,openpyxl 也无法在 Windows 上保存

    在 OS X 上 openpyxl save 对于名为 all done xlsx 的文件工作正常 然而 当在 Windows 上尝试时 会导致 c Users Tony Desktop ROI gt python roi cut6 py
  • Roxygen2 - 如何正确记录 S3 方法

    我读过 Roxygen2 PDF 和这个site 并且我不知道 method S3method export 之间的区别以及如何使用它们来正确记录 S3 方法 我编写了以下示例以供讨论 我如何正确记录这些 如何模拟 print 和其他通用函
  • Xamarin Forms 上的 UIWebView 弃用和 App Store 拒绝

    我可以修复以下问题吗 我的设置 Xamarin iOS 版本 13 16 0 13 Visual Studio 社区 Visual Studio Community 2019 for Mac 版本 8 5 2 内部版本 13 Xamarin
  • YouTube API 500 错误

    我正在尝试使用 Youtube Data API V3 编辑我的频道描述 但如果我尝试对 brandingSettings 执行任何操作 则会收到 500 内部服务器错误 我什至尝试启动私人浏览会话并使用不同的 Google 帐户 这是 G
  • 使用 mvvmcross 和 mono touch 将照片上传到网络服务

    我想做的只是使用 mono touch mono droid 和 mvvmcross 将照片上传到网络服务 希望在某种程度上这样我只需要为 android 和 IOS 编写一次代码 我最初的想法是让用户选择一个图像 在android中使用意
  • DateTime.ToOADate - 仅时间

    我有一个带有当前日期 DateTime Now 的 DateTime 变量 我可以将其转换为 OADate 格式 41392 524432 作为示例 但我如何才能转换这个 我是just获取没有日期的时间 例如 1 分 4 秒 01 04 在
  • 有一个为Windows API编写的汇编代码,如何在Linux上编译它并用Wine运行

    中有一个示例代码这个介绍 如下所示 Sample x64 Assembly Program Chris Lomont 2009 www lomont org extrn ExitProcess PROC external functions
  • Docker 在 docker run 命令上给出“没有这样的文件或目录:未知”

    我能够成功构建 Docker 镜像 通过docker build t foo bar 这是它的Dockerfile FROM ubuntu 20 04 COPY benchmark sh home benchmarking programm
  • 根据数据集中的另一个变量设置背景颜色

    我试图展示春分对我的数据的影响 即全年一系列远程跟踪的鸟类数据 为了做到这一点 我想绘制一年中每一天的纬度 并将春分效果作为背景中的颜色分级 我的数据看起来像这样 SO lt data frame date seq as Date 2000
  • 如何将 TIMESTAMPDIFF 添加到 SqlSoup 查询?

    我有一个正在运行并使用 SqlSoup 的报告程序 并且现在由 SqlSoup 调用生成整个查询 MySqL 函数除外 TIMESTAMPDIFF 实际的 SQL 短语应该是 TIMESTAMPDIFF PERIOD start time
  • JavaFX 2 WebView:如何增强滚动条

    我已经使用 JavaFX WebView 实现了日志查看器 然而 对于该日志查看器的用户来说 有一个大问题 网络查看器的滚动条非常细 我什至遇到了一个问题 在 Windows 7 XP 上 奇怪的是在 Windows 8 上没有 当单击滚动
  • 有人能解释一下 C# 中“按值传递”和“按引用传递”是什么意思吗?

    我不太确定 C 中 按值传递 和 按引用传递 的概念 我认为按值传递意味着 int i 9 我们将 int i 传递给一个方法 例如 method i 通过引用传递意味着精确传递其位置 例如 Class method variable 它会
  • Bootstrap 5 - 卡片元素在底部对齐

    好吧 我是 Bootstrap 的新手 我试图将一个按钮元素始终放在卡片的底部 即使正文很小 然而 我总是收到这个结果 它没有将我的按钮放在我需要的右下角
  • Android 纹理文本

    如何制作带有纹理而不是文本颜色或渐变的文本 例如 png 文件 就像是this 我理解逻辑 我应该使文本颜色透明并放在文本位图下方 我想我无法通过Textview 我不知道如何使用画布或 OpenGL 来做到这一点 有什么想法吗 这是一种使
  • 颠覆错误“无法读取状态行”是什么意思?

    这是一个相当基本的问题 但它让我发疯 我在 beanstalk com 上建立了一个全新的存储库 他们给了我网址 http my name svn beanstalkapp com blog 他们还会在存储库中自动创建标签 主干和分支文件夹
  • 奇怪:无法改变jni中Integer的值

    我用C编写了一个jni函数来设置两个java Integer对象的值 就像这样 jni do something JNIEnv env jobject thiz jobject p1 jobject p2 jclass c jfieldID
  • PHP:获取小数位数

    有没有一种直接的方法来确定 PHP 中整数 双精度值的小数位数 也就是说 不使用explode str 1 23444 print strlen substr strrchr str 1
  • JavaScript 中 && 简写的解释

    使用 jQuery 的水印插件 我尝试 jslint 并最小化函数 但我遇到了以前从未见过的语法 其中存在确实应该有赋值或函数调用的表达式 function fn watermark function css text return thi