这行检查单词是否回文的代码在 JS 中如何工作?
How does this line of code for checking whether a word is palindrome or not, work in JS?
所以我正在研究解决方案,以找到执行检查单词是否为回文操作的最快方法 Javascript。我发现这是列出的解决方案之一,它有效,但我不知道为什么使用 `` 以及它是如何工作的。欢迎详细解释。
代码如下,
p=s=>s==[...s].reverse().join``
p('racecar'); //true
原始答案的 link 是,
JS 将其解释为连接函数的第一个参数,否则它将使用默认的“,”连接字符串。 “.join``”部分等同于“.join('')”,无需为括号添加两个额外的字符。
至于为什么只有 `` 适用于此而不适用于 "" 或 '',您必须查找 ECMA Script 文档;我没有临时解释给你。
tagged template literals:如果没有标记的模板文字,示例将如下所示:
p = s=>s==[...s].reverse().join('')
编辑:
看来我在完整阅读您的问题之前回答了问题,抱歉。 Template literals 允许使用类似于 ${placeholder}
的占位符。 ES6 通过内置处理器函数运行模板来处理占位符,但您可以使用自己的自定义函数,而不是使用此 'tag' 语法:
tagFunction`literal ${placeholder} template`
示例代码使用(我认为是滥用)此功能通过调用 join
方法作为带有空模板的标记来保存 2 个字符。
所以我正在研究解决方案,以找到执行检查单词是否为回文操作的最快方法 Javascript。我发现这是列出的解决方案之一,它有效,但我不知道为什么使用 `` 以及它是如何工作的。欢迎详细解释。
代码如下,
p=s=>s==[...s].reverse().join``
p('racecar'); //true
原始答案的 link 是,
JS 将其解释为连接函数的第一个参数,否则它将使用默认的“,”连接字符串。 “.join``”部分等同于“.join('')”,无需为括号添加两个额外的字符。
至于为什么只有 `` 适用于此而不适用于 "" 或 '',您必须查找 ECMA Script 文档;我没有临时解释给你。
tagged template literals:如果没有标记的模板文字,示例将如下所示:
p = s=>s==[...s].reverse().join('')
编辑:
看来我在完整阅读您的问题之前回答了问题,抱歉。 Template literals 允许使用类似于 ${placeholder}
的占位符。 ES6 通过内置处理器函数运行模板来处理占位符,但您可以使用自己的自定义函数,而不是使用此 'tag' 语法:
tagFunction`literal ${placeholder} template`
示例代码使用(我认为是滥用)此功能通过调用 join
方法作为带有空模板的标记来保存 2 个字符。