⑴ javascript中eval的用法
JavaScript eval() 函数
JavaScript 全局对象
定义和用法:
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
语法:
eval(string)
返回值:
通蠢空贺过计算 string 得到的值(如果有的话)。
说明:
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() 方法赋予另一亏敬个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
抛出:
如果参数中没有合法的表达式和语带派句,则抛出 SyntaxError 异常。
如果非法调用 eval(),则抛出 EvalError 异常。
如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。
(1)jseval加法扩展阅读:
调用eval函数的三种情况:
1、直接调用
直接调用时,eval函数相关的执行环境属性ThisBinding,LexicalEnvironment,VariableEnvironment的值如下:
a) ThisBinding是调用eval函数时,调用方执行环境的ThisBinding
b) LexicalEnvironment是调用eval函数时,调用方执行环境的LexicalEnvironment
c) VariableEnvironemnt是调用eval函数时,调用方执行环境的VariableEnvironment
2、间接调用
所谓间接调用,即将eval赋值给另一个变量后在调用
3、严格模式下的eval
在严格模式下,eval的LexicalEnvironment,VariableEnvironment指向属于eval自己的Lexcial Environment,而不是调用方的Lexical Environment,但是ThisBinding还是调用方的ThisBinding。
同时,在严格模式下如果eval直接调用,那么eval的Lexical Environment的outer指针指向调用方的Lexical Environment,否则,如果是间接调用,那么eval的Lexical Environment的outer指针指向全局环境的Lexical Environment。
参考资料来源:网络--eval()
⑵ js eval(x.) 函数输出undefined
s是一个对象 {ID1000:'xxx'} 类似这样的 是有ID1000 这个属性
"Id" + $(this).val().replace(/-\d+$/, '').replace("-", "") = ’ID201301'
s没有ID201301属性 自然是undefined
⑶ 求解密JS eval(function(p,a,c,k,e,d))
这个吗。。。
请问您是从哪弄的?
上网搜搜就行了!
⑷ 为何js计算带有小数的加法的时候会出现误差
很正常的,浮点数运算的误差。哪种语言都这样,只是误差大小不同而已。
用解析字符串的方式移动小数点,转化为整数,完毕后,在把小数点复位。
浮点数运算的时候,先转化为二进制,用二进制来算,结果再转回十进制
例如 :求1038.1-1000
1038.1=10000001110......
1000= 1111101000
1038.1转化为二进制是个无限循环小数,1100是循环节,只能取近似值,误差就是这里产生的
如果浏览器版本高,可以用toFixed() 方法可把 Number 四舍五入为指定小数位数的数字.
后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。
语法
NumberObject.toFixed(num)
返回值
返回 NumberObject 的字符串表示,不采用指数计数法,小数点后有固定的 num 位数字。如果必要,该数字会被舍入,也可以用 0 补足,以便它达到指定的长度。如果 num 大于 le+21,则该方法只调用 NumberObject.toString(),返回采用指数计数法表示的字符串。
抛出
当 num 太小或太大时抛出异常 RangeError。0 ~ 20 之间的值不会引发该异常。有些实现支持更大范围或更小范围内的值。
当调用该方法的对象不是 Number 时抛出 TypeError 异常。
在本例中,我们将把数字舍入为仅有一位小数的数字:
Show the number 13.37 with one decimal:
<script type="text/javascript">
var num = new Number(13.37);
document.write (num.toFixed(1))
</script>
输出:
Show the number 13.37 with one decimal:
13.4
⑸ js 如何实现加法
js中加法运算有:
1、输入的是字符串, 字符串的连接符也是加号, 最后就按字符串运算了,所以先转换成数值型。
整数:c=parseInt(a)+parseInt(b)
浮点数:c =parseFloat(a)+parseFloat(b)
2、evel:可计算某个字符串,并执行其中的的 JavaScript 代码。
evel(a+b)
例如:
var a = 1,
var b = 2,
var c = a + b ,
这样c得出来的解果是12。
使用Number()函数可以解决这个问题,如下 :
var c = Number(a) + Number(b)
这样c得出来的解果是3。
(5)jseval加法扩展阅读
Javascript中加法运算符总结:
1、String+String
var a = '10',
b = '20';
console.log(a+b); //1020
2、String+Object
var a = '10',
b = {_key:20};
console.log(a+b); //10[object Object]
//Object.prototype.toString()方法返回一个表示该对象的字符串。
3、String+Number
var a = '10',
b = 20;
console.log(a+b); //1020
var a = 10,
b = '20';
console.log(a+b); //1020