JS eval()函數的一些見解

来源:http://www.cnblogs.com/dengting/archive/2016/08/13/5768715.html
-Advertisement-
Play Games

這兩天查了好多eval()的資料,結果還是很模糊,但是把自己知道的寫下來了! ...


一、eval是基本使用規則

  • 1 eval() 函數可計算某個字元串,並執行其中的的 JavaScript 代碼。
  • eval(string)
  • 3 string必需。要計算的字元串,其中含有要計算的 JavaScript 表達式或要執行的語句。
  • 4 eval()只有一個參數。
  • 5 eval使用比較不安全,忘慎重使用

二、eval的錯誤使用方法

  • 1 如果傳入的參數不是字元串,它直接返回這個函數。
  • 2 如果參數是字元串,它會把字元串當成JavaScript代碼進行編譯,如果編譯失敗者拋出一個語法錯誤異常。
  • 3 如果編譯成功,則開始執行這一段代碼,並返回字元串中的最後一個表達式或語句的值,
  • 4 如果最後一個表達式或語句沒有值,則最終返回undefined。

三、使用例子

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>eval</title>
	</head>
	<body>		
		
		<script type="text/javascript">

             //正確輸入
                var x = 10;
                document.write(eval(10*x + 10)) //表達式 輸出110
                document.write("<br />");
                document.write(eval("10 == x")); //表達式 輸出true
                document.write("<br />");
			    eval(document.write(2+5*x));   //執行語句 輸出52
  
            //非正常輸入
             try{
             	var y = 8;
			    //表達式
			    document.write(eval("9+6*x"+"100"));  //如果參數中沒有合法的表達式和語句,則拋出 SyntaxError 異常。
			    document.write("<br />");  
                eval('++++2');     //編譯失敗ReferenceError異常
                eval(document.write(2+2)); //編譯成功
                document.write(eval());   //返回undefined

               var my = eval();             //如果試圖覆蓋 eval 屬性或把 eval() 方法賦予另一個屬性,
               document.write(my(1+2));    //並通過該屬性調用它,則 ECMAScript 實現允許拋出一個 EvalError 異常。
               
                }
    
			 catch(exception) {
               alert(exception);
             }
			 
		</script>
		
	</body>
</html>

  我自己查了好多資料,也還很模糊,希望瞭解的大神能指點指點!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先,我看的是Nop 3.80,最新版 百度資料很多,Nop用到的主要的技術有: 1、Mvc,最新版用的是 5.2.3.0 2、entity framework 3、autofac 4、插件化 5、(因為我是邊看代碼邊寫這個博客,怕忘記了一些東西,所以邊看便記錄,後面我看到感覺有好處的會添加到這裡來 ...
  • (三) 優先使用聚合,而不是繼承 有一段時間,養豬場的老闆雇用了清潔工人來打掃豬舍。但有一天,老闆忽然對自己說"不對啊,既然我有機器人,為什麼還要雇人來做這件事情?應該讓機器人來打掃宿舍!" 於是,這個需求被提交到了機器人的研發小組。看到這個需求,我們敏感地意識到,這是一個潛藏了更多變化的需求,未來 ...
  • Atitit.excel導出 功能解決方案 php java C#.net版總集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 類庫選型java .net均有apache.poi 可用,php使用phpexcel1.8.01 1.3. ...
  • 對於設計模式, 從本質上說, 其最大的用途就是適應需求的變化. 因為有了設計模式,我們可以在設計階段就為未來可能發生的變化留下足夠的空間. 我們通過一個建造現代化養豬場的故事, 來討論一下設計模式與需要變化之間的關係. (一)設計模式最根本的意圖是適應需求的變化 一個機器人研發小組研製了一種能自動喂 ...
  • 回到目錄 關於Lind.DDD框架里API框架的技術點說明 講解:張占嶺 花名:倉儲大叔 主要框架:Lind.DDD 目錄 關於Lind.DDD.Authorization Lind.DDD為我們提交了強大的API校驗組件,只需要在全局或者要授權的controller上添加對應的過濾器即可完成授權的 ...
  • HTML(hyper text markup language):超文本標記語言 標記學習 1.標題標記:有六種標題<h1>-<h6> 2.列表:(無序列表;有序列表;定義列表)<ul>、<ol>、<dl> 3.段落<p> 4.預格式文本(按照源文件格式在瀏覽器中顯示)<pre> 5.分區塊文本<d ...
  • HTML(HyperText Markup Language,超文本標記語言)最早的HTML官方正式規範,是1995年IETF(Internet Engineering Task Force,網際網路工程任務組)發佈的HTML 2.0。W3C(World Wide Web Consortium,萬維網 ...
  • 一、angularJS簡介 1.什麼是 AngularJS? AngularJS 是一個 JavaScript 框架。它是一個以 JavaScript 編寫的庫。AngularJS是協助搭建單頁面工程的開源前端框架。它通過MVC模式使得開發與測試變得更容易。AngularJS 是以一個 JavaSc ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...