eval ,倒引号 及$( ) 使用调研

一,什么是 eval

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
说明:

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。

抛出
如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。
如果非法调用 eval(),则抛出 EvalError 异常。
如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。

具体用例:

<script type="text/javascript">

eval("x=10;y=20;document.write(x*y)")

document.write(eval("2+2"))

var x=10
document.write(eval(x+17))

</script>

结果:

200
4
27

二,倒引号及 $() 的作用

倒引号与 () ()里的命令先执行,然后将结果替换到当前命令中的作用

eg:

#!/bin/bash
echo $(echo $HOME)
echo "###########"
echo `echo $HOME`

运行脚本:

这里写图片描述

三, 倒引号与$( )的对比
我们对上面的脚本稍加修改:
如下:

#!/bin/bash
echo $(echo \$HOME)
echo "###########"
echo `echo \$HOME`

运行结果:
这里写图片描述

此时我们便可以发现,在 ()\”$ ”;
但是在倒引号中反斜杠并没有起到作用,而是直接打出了“$HOME”

我们再做以下修改:

#!/bin/bash
echo $(echo \\\\$HOME)
echo "###########"
echo `echo \\\\$HOME`

运行结果:
这里写图片描述

通过比较我们发现:
1,倒引号中的“\”并没有做到转义的功能,因为倒引号本身就已经有转义的功能了
2,$( )中的“\”依旧能够起到转义的作用,当打出四个反斜杠时,就会由于转义的作用打出两个
3,在倒引号内每四个“\”将会打出一个反斜杠

请看测试用例:

#!/bin/bash
echo $(echo \\\\\\\\$HOME)
echo "###########"
echo `echo $\\\\\\\\$HOME`

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值