目录
1.3 eval(`alert('hello')` 、eval([`alert('hello')`])和 eval(`[alert('hello1')]`)的区别
3.eval`${prompt()}` 返回的是啥?为什么?
模板字符串使用反引号 (` `) 来代替普通字符串中的用双引号和单引号。模板字符串可以包含特定语法(${expression})的占位符。占位符中的表达式和周围的文本会一起传递给一个默认函数,该函数负责将所有的部分连接起来,如果一个模板字符串由表达式开头,则该字符串被称为带标签的模板字符串,该表达式通常是一个函数,它会在模板字符串处理后被调用,在输出最终结果前,你都可以通过该函数来对模板字符串进行操作处理。在模版字符串内使用反引号(`)时,需要在它前面加转义符(\)。
- `string text`
-
- `string text line 1
- string text line 2`
-
- `string text ${expression} string text`
-
- tag `string text ${expression} string text`
- //标签就是函数,紧跟在后面的模板字符串就是他的参数
eval(`alert('hello')` 实现了弹窗


eval([`alert('hello')`])没有弹窗,返回的是一个字符型的数组

eval(`[alert('hello1')]`)弹窗了


这个问题就得去查询eval()的返回值
eval() 函数会将传入的字符串当做 JavaScript 代码进行执行。
如果 eval() 的参数不是字符串, eval() 会将参数原封不动地返回。
如果你以字符串的形式构造了算术表达式,那么可以在后面用 eval()对它求值。
eval 返回最后一个表达式的值。
分析:
eval(`alert('hello')` 和 eval(`[alert('hello1')]`)
都弹窗了所以返回的是alert()的返回值,而alert()没有返回值,所以eval()最后的返回值为空
eval([`alert('hello')`]) 没有弹窗返回的是一个字符型数组
因为eval()里面包含的就是一个数组所以原样返回了
alert(变量名)
alert()会在全局里面找,如果存在就打印,不存在就报错
可以看出返回的是一个空数组

eval`${abc,prompt()def}`
