![]() |
1
35
一个区别是
与此相关的是
一些示例
具有
但对于模板文字,这是不可能的:
可能的情况是:
但这不会导致不必要的代码执行,至少不会比这更糟:
任何函数调用都必须在模板文字中进行字面编码。字符串变量的值不能改变这一点。模板文字不可能调用变量函数。这:
…将拨打
相当邪恶的模板文字尽管如此,这仍然是可能的:
但很明显,该计划
乐意地
打开了在全局对象上执行任何函数的可能性。事实上,你正在接近
请注意,通过以下方式可以达到相同的效果:
最邪恶的模板文字如前所述,那么您不妨将此模板改为文字:
…因此,坏的部分并不是模板文字,而是您拥有的泛型函数调用
设计
加入其中。为此,您不需要模板文字或
关于示例你举了这个例子:
这将执行您的
编译时间要强调编译/运行时解析的区别,请注意,不能使用没有有效语法的模板文字运行代码。 比较这两个脚本:
和:
请注意语法错误。当参数为
更确切地说,
|
![]() |
2
2
我认为 评估 和 模板文字 . 评估 可以计算代码中不直接可见的动态表达式。这使得它很危险,因为您可以计算任何可能出现的字符串 从任何位置:客户端/第三方/数据库。。。 然而,情况有所不同 模板文字 ,
例如,这将与 评估
但这不适用于 模板文字
您需要静态插入表达式才能使其工作
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals |
![]() |
3
-1
如果你担心的话,模板文字会自动转义引号。它们也不计算或执行任何内容,它们将您放入的任何内容转换为字符串。如果您担心SQL注入,请尝试使用模板文字进行此操作,您将看到它们被转义。 你应该避免使用eval,除非你有 非常好的理由 使用它,你真的知道你需要它来实现你的目标。否则就是 最好避免 . |
![]() |
Hipster1206 · 分析bash中有空间的单个字符串参数 7 年前 |
![]() |
Mr. Boy · 是否可能动态重新加载JS脚本文件? 7 年前 |
|
R. H. · matlab函数中避免求值 7 年前 |
![]() |
Cleb · 如何为差分进化添加几个约束? 7 年前 |
![]() |
Sergey Onishchenko · 将表达式计算为列名 7 年前 |
![]() |
ARAT · 计算字符串和空单元格 7 年前 |
![]() |
Doc_failure · 在节点服务器中使用eval是一个坏主意吗? 7 年前 |