目录
1.3 eval(`alert('hello')` 、eval([`alert('hello')`])和 eval(`[alert('hello1')]`)的区别
3.eval`${prompt()}` 返回的是啥?为什么?
1.什么是模板字符串` `
1.1mdn的描述:
模板字符串使用反引号 (` `) 来代替普通字符串中的用双引号和单引号。模板字符串可以包含特定语法(${expression}
)的占位符。占位符中的表达式和周围的文本会一起传递给一个默认函数,该函数负责将所有的部分连接起来,如果一个模板字符串由表达式开头,则该字符串被称为带标签的模板字符串,该表达式通常是一个函数,它会在模板字符串处理后被调用,在输出最终结果前,你都可以通过该函数来对模板字符串进行操作处理。在模版字符串内使用反引号(`)时,需要在它前面加转义符(\)。
1.2 模板字符串使用语法
`string text`
`string text line 1
string text line 2`
`string text ${expression} string text`
tag `string text ${expression} string text`
//标签就是函数,紧跟在后面的模板字符串就是他的参数
1.3 eval(`alert('hello')` 、eval([`alert('hello')`])和 eval(`[alert('hello1')]`)的区别
eval(`alert('hello')` 实现了弹窗
eval([`alert('hello')`])没有弹窗,返回的是一个字符型的数组
eval(`[alert('hello1')]`)弹窗了
2.为什么三个返回值不一样?
这个问题就得去查询eval()的返回值
eval()
函数会将传入的字符串当做 JavaScript 代码进行执行。
如果 eval()
的参数不是字符串, eval()
会将参数原封不动地返回。
如果你以字符串的形式构造了算术表达式,那么可以在后面用 eval()
对它求值。
eval
返回最后一个表达式的值。
分析:
eval(`alert('hello')` 和 eval(`[alert('hello1')]`)
都弹窗了所以返回的是alert()的返回值,而alert()没有返回值,所以eval()最后的返回值为空
eval([`alert('hello')`]) 没有弹窗返回的是一个字符型数组
因为eval()里面包含的就是一个数组所以原样返回了
alert(变量名)
alert()会在全局里面找,如果存在就打印,不存在就报错
3.eval`${prompt()}` 返回的是啥?为什么?
可以看出返回的是一个空数组
eval`${abc,prompt()def}`