微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

f='' "['trim']['bind']`Hello, world!`() 有人解释一下这段代码是如何运行的?

如何解决f='' "['trim']['bind']`Hello, world!`() 有人解释一下这段代码是如何运行的?

函数返回'Hello,world!' 将数组中的修剪和绑定理解为字符串非常令人困惑。

f=''['trim']['bind']`Hello,world!`()

解决方法

我以前从未见过这样的事情。我发现它非常有趣,所以研究了它是如何工作的。这是我试图解释的:

  1. ''['trim'] -- 初始空白字符串 '' 具有可用的字符串方法,例如 .trim()。使用 bracket notation,您可以使用 ''['trim'] 访问修剪方法。

  2. ''['trim']['bind'] -- 虽然不是调用trim方法(这需要在最后添加()),我们调用.bind()方法,它是trim原型的一部分,再次使用括号表示法。 Bind takes its initial argument and binds it to the previous function (trim) as the 'this' keyword

  3. ''['trim']['bind']`Hello,world!` -- 这里的最后一部分是将数组内的字符串 'Hello,world!' 传递给 .bind() 方法。这里的符号是用作 tagged template 的字符串文字。这允许将模板文字用作其前面的“标签”的数组参数,在这种情况下是绑定函数。这现在等价于 ['Hello,world!'].trim()。 Trim 将一个字符串数组强制转换为一个字符串,每个元素用逗号分隔。但由于只有 1 个元素,因此返回单个元素。

  4. f=''['trim']['bind']`Hello,world!`() -- 最后用 () 调用整个内容会导致修剪“Hello,world!”,它只返回相同的字符串,因为实际上没有任何可修剪的内容。获取字符串方法的原型只是一个诡计!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。