⑴ 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