国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

eval()函數(shù)功能介紹及弊端說明

這篇具有很好參考價(jià)值的文章主要介紹了eval()函數(shù)功能介紹及弊端說明。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

eval()作用:

eval() 函數(shù)可計(jì)算某個(gè)字符串,并執(zhí)行其中的的 JavaScript 代碼。

語法:

eval(string)

參數(shù):

string  必需,要計(jì)算的字符串,其中含有要計(jì)算的 JavaScript 表達(dá)式或要執(zhí)行的語句。

返回值:返回計(jì)算string的值,如果有的話 (沒有則不做任何改變返回)

example:

eval(“x=10;y=20;document.write(x*y)”); //output為200
document.write(eval(“2+2”));  //output為4
var x=10;
document.write(eval(x+17));  //output為27

使用eval()函數(shù)也可以將JSON字符串解析為對象,這個(gè)功能能完成JSON.parse()的功能,但是有不一樣的地方,請看下面代碼

JSON.parse()

var json = ‘{“name”:“GDT”,“age”:23,“University”:“GDUT”}’;
var info = JSON.parse(json);    //解析為JSON對象
document.write(info); //output為[object Object]

eval()

var json = ‘{“name”:“GDT”,“age”:23,“University”:“GDUT”}’;
var info = eval(‘(’ + json + ‘)’); //解析為JSON對象
document.write(info); //output為[object Object]

注意

eval()要用一對圓括號將字符串包起來

原因:歸結(jié)于eval本身的問題,由于json是以”{}”的方式來開始以及結(jié)束的,在JS中,它會(huì)被當(dāng)成一個(gè)語句塊來處理,所以必須強(qiáng)制性的將它轉(zhuǎn)換成一種表達(dá)式。解決方法:加上圓括號的目的是迫使eval函數(shù)在處理JavaScript代碼的時(shí)候強(qiáng)制將括號內(nèi)的表達(dá)式(expression)轉(zhuǎn)化為對象,而不是作為語句(statement)來執(zhí)行。舉一個(gè)例子,例如對象字面量{},如若不加外層的括號,那么eval會(huì)將大括號識別為JavaScript代碼塊的開始和結(jié)束標(biāo)記,那么{}將會(huì)被認(rèn)為是執(zhí)行了一句空語句。請看下列例子的不同

alert(eval(“{}”)); // return undefined
alert(eval(‘(’+‘{}’+‘)’)); // return object[Object]

安全性

相對于寫法格式嚴(yán)格的JSON.parse()來說,eval()可以解析任何字符串,eval是不安全的,因?yàn)閑val比較寬松,會(huì)有潛在的安全性問題。比如以下代碼:

var str1 = ‘{“a”:“b”}’;
document.write(eval(“(”+str1+“)”)); //正常解析為對象
var str2 = ‘{“a”: (function(){alert(“I can do something bad!”);})()}’;
eval(‘(’+str2+‘)’); //可以用來執(zhí)行木馬腳本
如果用惡意用戶在json字符串中注入了向頁面插入木馬鏈接的腳本,用eval也是可以操作的,而用JSON.parse()則不必?fù)?dān)心這個(gè)問題,可見,雖然eval()功能很強(qiáng)大,但是實(shí)際用到的機(jī)會(huì)并不多。

JavaScript簡介

JavaScript(簡稱“JS”)是一種具有函數(shù)優(yōu)先的輕量級,解釋型或即時(shí)編譯型的編程語言。雖然它是作為開發(fā)Web頁面的腳本語言而出名,但是它也被用到了很多非瀏覽器環(huán)境中,JavaScript基于原型編程、多范式的動(dòng)態(tài)腳本語言,并且支持面向?qū)ο?、命令式、聲明式、函?shù)式編程范式。

JavaScript在1995年由Netscape公司的Brendan Eich,在網(wǎng)景導(dǎo)航者瀏覽器上首次設(shè)計(jì)實(shí)現(xiàn)而成。因?yàn)镹etscape與Sun合作,Netscape管理層希望它外觀看起來像Java,因此取名為JavaScript。但實(shí)際上它的語法風(fēng)格與Self及Scheme較為接近。

JavaScript的標(biāo)準(zhǔn)是ECMAScript。截至2012年,所有瀏覽器都完整的支持ECMAScript 5.1,舊版本的瀏覽器至少支持ECMAScript 3標(biāo)準(zhǔn)。2015年6月17日,ECMA國際組織發(fā)布了ECMAScript的第六版,該版本正式名稱為ECMAScript 2015,但通常被稱為ECMAScript 6或者ES2015。

JavaScript運(yùn)行模式

JavaScript是一種屬于網(wǎng)絡(luò)的高級腳本語言,已經(jīng)被廣泛用于Web應(yīng)用開發(fā),常用來為網(wǎng)頁添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實(shí)現(xiàn)自身的功能的。

1.是一種解釋性腳本語言(代碼不進(jìn)行預(yù)編譯)。
2.主要用來向HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)頁面添加交互行為。
3.可以直接嵌入HTML頁面,但寫成單獨(dú)的js文件有利于結(jié)構(gòu)和行為的分離。
4.跨平臺(tái)特性,在絕大多數(shù)瀏覽器的支持下,可以在多種平臺(tái)下運(yùn)行(如Windows、Linux、Mac、Android、iOS等)。
5.JavaScript腳本語言同其他語言一樣,有它自身的基本數(shù)據(jù)類型,表達(dá)式和算術(shù)運(yùn)算符及程序的基本程序框架。JavaScript提供了四種基本的數(shù)據(jù)類型和兩種特殊數(shù)據(jù)類型用來處理數(shù)據(jù)和文字。而變量提供存放信息的地方,表達(dá)式則可以完成較復(fù)雜的信息處理。

JavaScript腳本語言具有以下特點(diǎn):

(1)腳本語言。JavaScript是一種解釋型的腳本語言,C、C++等語言先編譯后執(zhí)行,而JavaScript是在程序的運(yùn)行過程中逐行進(jìn)行解釋。
(2)基于對象。JavaScript是一種基于對象的腳本語言,它不僅可以創(chuàng)建對象,也能使用現(xiàn)有的對象。
(3)簡單。JavaScript語言中采用的是弱類型的變量類型,對使用的數(shù)據(jù)類型未做出嚴(yán)格的要求,是基于Java基本語句和控制的腳本語言,其設(shè)計(jì)簡單緊湊。
(4)動(dòng)態(tài)性。JavaScript是一種采用事件驅(qū)動(dòng)的腳本語言,它不需要經(jīng)過Web服務(wù)器就可以對用戶的輸入做出響應(yīng)。在訪問一個(gè)網(wǎng)頁時(shí),鼠標(biāo)在網(wǎng)頁中進(jìn)行鼠標(biāo)點(diǎn)擊或上下移、窗口移動(dòng)等操作JavaScript都可直接對這些事件給出相應(yīng)的響應(yīng)。
(5)跨平臺(tái)性。JavaScript腳本語言不依賴于操作系統(tǒng),僅需要瀏覽器的支持。因此一個(gè)JavaScript腳本在編寫后可以帶到任意機(jī)器上使用,前提是機(jī)器上的瀏覽器支持JavaScript腳本語言,JavaScript已被大多數(shù)的瀏覽器所支持。 [4]不同于服務(wù)器端腳本語言,例如PHP與ASP,JavaScript主要被作為客戶端腳本語言在用戶的瀏覽器上運(yùn)行,不需要服務(wù)器的支持。所以在早期程序員比較傾向于使用JavaScript以減少對服務(wù)器的負(fù)擔(dān),而與此同時(shí)也帶來另一個(gè)問題,安全性。
而隨著服務(wù)器的強(qiáng)壯,雖然程序員更喜歡運(yùn)行于服務(wù)端的腳本以保證安全,但JavaScript仍然以其跨平臺(tái)、容易上手等優(yōu)勢大行其道。同時(shí),有些特殊功能(如AJAX)必須依賴JavaScript在客戶端進(jìn)行支持。文章來源地址http://www.zghlxwxcb.cn/news/detail-495765.html

到了這里,關(guān)于eval()函數(shù)功能介紹及弊端說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 詳細(xì)介紹,驅(qū)動(dòng)IC的功能和作用

    詳細(xì)介紹,驅(qū)動(dòng)IC的功能和作用

    在LED顯示屏的工作當(dāng)中,驅(qū)動(dòng)IC的作用是接收符合協(xié)議規(guī)定的顯示數(shù)據(jù)(來自接收卡或者視頻處理器等信息源),在內(nèi)部生產(chǎn)PWM與電流時(shí)間變化,輸出與亮度灰度刷新等相關(guān)的PWM電流來點(diǎn)亮LED。驅(qū)動(dòng)IC和邏輯IC以及MOS開關(guān)組成的周邊IC,共同作用于LED顯示屏的顯示功能并決定其

    2024年02月10日
    瀏覽(27)
  • 路由器中的連接數(shù)限制功能的作用介紹

    每個(gè)路由器的內(nèi)部都維護(hù)著一張連接數(shù)表,這是用來存放連接數(shù)信息的,動(dòng)態(tài)占用一些內(nèi)存、CPU。這張表的大小是固定的,若這張表被填滿了,再有數(shù)據(jù)出去路由器沒有辦法轉(zhuǎn)發(fā)。路由器里的連接數(shù)主要是指并發(fā)連接數(shù),它是路由器能夠同時(shí)處理的點(diǎn)對點(diǎn)連接的數(shù)目。今天,

    2024年02月08日
    瀏覽(25)
  • 深入了解Python的eval函數(shù):基礎(chǔ)用法與潛在危險(xiǎn)【第118篇—eval函數(shù)】

    深入了解Python的eval函數(shù):基礎(chǔ)用法與潛在危險(xiǎn)【第118篇—eval函數(shù)】

    在Python中, eval 函數(shù)是一個(gè)強(qiáng)大而靈活的工具,它允許將字符串作為代碼來執(zhí)行。然而,雖然 eval 在某些情況下非常方便,但它也潛藏著一些潛在的危險(xiǎn),如果不小心使用,可能導(dǎo)致安全性問題。在本文中,我們將深入探討 eval 函數(shù)的基礎(chǔ)用法,并提供一些使用該函數(shù)時(shí)需要

    2024年03月12日
    瀏覽(24)
  • 硬件知識積累 USB 接口 type - A type - B type - C 的介紹與功能說明 (簡單介紹)

    硬件知識積累 USB 接口 type - A type - B type - C 的介紹與功能說明 (簡單介紹)

    1.1 USB 的定義 USB :? ?通用串行總線(英語: Universal Serial Bus,縮寫:USB)是一種串口總線標(biāo)準(zhǔn),也是一種輸入輸出接口的技術(shù)規(guī)范,被廣泛地應(yīng)用于個(gè)人電腦和移動(dòng)設(shè)備等信息通訊產(chǎn)品,并擴(kuò)展至攝影器材、數(shù)字電視(機(jī)頂盒)、游戲機(jī)等其它相關(guān)領(lǐng)域。最新一代是USB4,它的傳輸速

    2024年02月06日
    瀏覽(19)
  • ? js函數(shù)之eval()

    ? 1、認(rèn)識 eval() 函數(shù)會(huì)將傳入的字符串當(dāng)做 JavaScript 代碼進(jìn)行執(zhí)行 謹(jǐn)慎使用!或者永遠(yuǎn)不要使用 eval! ? 2、了解 謹(jǐn)慎使用!或者永遠(yuǎn)不要使用 eval! eval(string) // 參數(shù) string 表示 JavaScript 表達(dá)式、語句或一系列語句的字符串。表達(dá)式可以包含變量與已存在對象的屬性。 輸出

    2024年02月02日
    瀏覽(22)
  • 【Python系列】eval 函數(shù)

    【Python系列】eval 函數(shù)

    eval() 是 python 中功能非常強(qiáng)大的一個(gè)函數(shù) 將字符串當(dāng)成有效的表達(dá)式來求值,并返回計(jì)算結(jié)果 所謂表達(dá)式就是: eval 這個(gè)函數(shù)會(huì)把里面的字符串參數(shù)的引號去掉,把中間的內(nèi)容當(dāng)成Python的代碼 ,eval 函數(shù)會(huì)執(zhí)行這段代碼并且返回執(zhí)行結(jié)果 也可以這樣來理解:eval() 函數(shù)就是實(shí)

    2024年04月08日
    瀏覽(23)
  • matlab eval 函數(shù)的使用

    matlab eval 函數(shù)的使用

    文章目錄 前言 一、eval函數(shù) 二、代碼示例 總結(jié) 很多時(shí)候在用matlab進(jìn)行編程的時(shí)候,我們需要給多個(gè)變量命名和賦值,如果用手一個(gè)一個(gè)的去敲,多少會(huì)感到無聊且枯燥,而且還顯得不專業(yè)。利用for循環(huán)和eval函數(shù)即可實(shí)現(xiàn)多變量的命名和賦值。 在matlab幫助文檔中,對eval函數(shù)

    2023年04月08日
    瀏覽(17)
  • 12 JavaScript 關(guān)于eval函數(shù)

    12 JavaScript 關(guān)于eval函數(shù)

    12 eval函數(shù) eval本身在js里面正常情況下使用的并不多. 但是很多網(wǎng)站會(huì)利用eval的特性來完成反爬操作. 我們來看看eval是個(gè)什么鬼? 從功能上講, eval非常簡單. 它和python里面的eval是一樣的. 它可以動(dòng)態(tài)的把字符串當(dāng)成js代碼進(jìn)行運(yùn)行. 也就是說. eval里面?zhèn)鬟f的應(yīng)該是即將要執(zhí)行的代

    2024年02月12日
    瀏覽(17)
  • 802.11ac無線路由器是什么意思 802.11ac路由器功能及作用介紹

    802.11ac無線路由器是什么?802.11ac是什么意思?802.11ac路由器有什么作用及功能?大多數(shù)朋友對于802.11ac協(xié)議可能還不是很了解,下文將會(huì)講解802.11ac路由器功能及特性方面的消息,以及為網(wǎng)友們科普一下802.11ac是什么 有網(wǎng)友問802.11ac無線路由器是什么,下文將會(huì)講解802.11ac路由

    2024年02月06日
    瀏覽(28)
  • python之eval函數(shù)使用詳解

    ????????eval() 是 Python 內(nèi)置的一個(gè)函數(shù),它可以將字符串當(dāng)作有效的 Python 表達(dá)式進(jìn)行求值并返回結(jié)果。它的作用是將字符串轉(zhuǎn)換為相應(yīng)的數(shù)據(jù)類型、執(zhí)行計(jì)算和執(zhí)行任意有效的 Python 代碼。 ????????然而,使用 eval() 函數(shù)需要謹(jǐn)慎,因?yàn)樗梢詧?zhí)行任意的代碼,可能導(dǎo)

    2024年04月14日
    瀏覽(51)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包