eval()函数功能介绍及弊端说明

这篇具有很好参考价值的文章主要介绍了eval()函数功能介绍及弊端说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

eval()作用:

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

语法:

eval(string)

参数:

string  必需,要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

返回值:返回计算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()函数也可以将JSON字符串解析为对象,这个功能能完成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()要用一对圆括号将字符串包起来

原因:归结于eval本身的问题,由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。解决方法:加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。请看下列例子的不同

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

安全性

相对于写法格式严格的JSON.parse()来说,eval()可以解析任何字符串,eval是不安全的,因为eval比较宽松,会有潜在的安全性问题。比如以下代码:

var str1 = ‘{“a”:“b”}’;
document.write(eval(“(”+str1+“)”)); //正常解析为对象
var str2 = ‘{“a”: (function(){alert(“I can do something bad!”);})()}’;
eval(‘(’+str2+‘)’); //可以用来执行木马脚本
如果用恶意用户在json字符串中注入了向页面插入木马链接的脚本,用eval也是可以操作的,而用JSON.parse()则不必担心这个问题,可见,虽然eval()功能很强大,但是实际用到的机会并不多。

JavaScript简介

JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。

JavaScript在1995年由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。

JavaScript的标准是ECMAScript。截至2012年,所有浏览器都完整的支持ECMAScript 5.1,旧版本的浏览器至少支持ECMAScript 3标准。2015年6月17日,ECMA国际组织发布了ECMAScript的第六版,该版本正式名称为ECMAScript 2015,但通常被称为ECMAScript 6或者ES2015。

JavaScript运行模式

JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。

1.是一种解释性脚本语言(代码不进行预编译)。
2.主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
3.可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
4.跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
5.JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。

JavaScript脚本语言具有以下特点:

(1)脚本语言。JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。
(2)基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。
(3)简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。
(4)动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可直接对这些事件给出相应的响应。
(5)跨平台性。JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提是机器上的浏览器支持JavaScript脚本语言,JavaScript已被大多数的浏览器所支持。 [4]不同于服务器端脚本语言,例如PHP与ASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较倾向于使用JavaScript以减少对服务器的负担,而与此同时也带来另一个问题,安全性。
而随着服务器的强壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖JavaScript在客户端进行支持。文章来源地址https://www.toymoban.com/news/detail-495765.html

到了这里,关于eval()函数功能介绍及弊端说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 详细介绍,驱动IC的功能和作用

    在LED显示屏的工作当中,驱动IC的作用是接收符合协议规定的显示数据(来自接收卡或者视频处理器等信息源),在内部生产PWM与电流时间变化,输出与亮度灰度刷新等相关的PWM电流来点亮LED。驱动IC和逻辑IC以及MOS开关组成的周边IC,共同作用于LED显示屏的显示功能并决定其

    2024年02月10日
    浏览(56)
  • 路由器中的连接数限制功能的作用介绍

    每个路由器的内部都维护着一张连接数表,这是用来存放连接数信息的,动态占用一些内存、CPU。这张表的大小是固定的,若这张表被填满了,再有数据出去路由器没有办法转发。路由器里的连接数主要是指并发连接数,它是路由器能够同时处理的点对点连接的数目。今天,

    2024年02月08日
    浏览(61)
  • 深入了解Python的eval函数:基础用法与潜在危险【第118篇—eval函数】

    在Python中, eval 函数是一个强大而灵活的工具,它允许将字符串作为代码来执行。然而,虽然 eval 在某些情况下非常方便,但它也潜藏着一些潜在的危险,如果不小心使用,可能导致安全性问题。在本文中,我们将深入探讨 eval 函数的基础用法,并提供一些使用该函数时需要

    2024年03月12日
    浏览(47)
  • 硬件知识积累 USB 接口 type - A type - B type - C 的介绍与功能说明 (简单介绍)

    1.1 USB 的定义 USB :   通用串行总线(英语: Universal Serial Bus,缩写:USB)是一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域。最新一代是USB4,它的传输速

    2024年02月06日
    浏览(42)
  • 【Python系列】eval 函数

    eval() 是 python 中功能非常强大的一个函数 将字符串当成有效的表达式来求值,并返回计算结果 所谓表达式就是: eval 这个函数会把里面的字符串参数的引号去掉,把中间的内容当成Python的代码 ,eval 函数会执行这段代码并且返回执行结果 也可以这样来理解:eval() 函数就是实

    2024年04月08日
    浏览(36)
  • ❤ js函数之eval()

    ❤ 1、认识 eval() 函数会将传入的字符串当做 JavaScript 代码进行执行 谨慎使用!或者永远不要使用 eval! ❤ 2、了解 谨慎使用!或者永远不要使用 eval! eval(string) // 参数 string 表示 JavaScript 表达式、语句或一系列语句的字符串。表达式可以包含变量与已存在对象的属性。 输出

    2024年02月02日
    浏览(32)
  • 12 JavaScript 关于eval函数

    12 eval函数 eval本身在js里面正常情况下使用的并不多. 但是很多网站会利用eval的特性来完成反爬操作. 我们来看看eval是个什么鬼? 从功能上讲, eval非常简单. 它和python里面的eval是一样的. 它可以动态的把字符串当成js代码进行运行. 也就是说. eval里面传递的应该是即将要执行的代

    2024年02月12日
    浏览(35)
  • matlab eval 函数的使用

    文章目录 前言 一、eval函数 二、代码示例 总结 很多时候在用matlab进行编程的时候,我们需要给多个变量命名和赋值,如果用手一个一个的去敲,多少会感到无聊且枯燥,而且还显得不专业。利用for循环和eval函数即可实现多变量的命名和赋值。 在matlab帮助文档中,对eval函数

    2023年04月08日
    浏览(41)
  • 802.11ac无线路由器是什么意思 802.11ac路由器功能及作用介绍

    802.11ac无线路由器是什么?802.11ac是什么意思?802.11ac路由器有什么作用及功能?大多数朋友对于802.11ac协议可能还不是很了解,下文将会讲解802.11ac路由器功能及特性方面的消息,以及为网友们科普一下802.11ac是什么 有网友问802.11ac无线路由器是什么,下文将会讲解802.11ac路由

    2024年02月06日
    浏览(44)
  • python之eval函数使用详解

            eval() 是 Python 内置的一个函数,它可以将字符串当作有效的 Python 表达式进行求值并返回结果。它的作用是将字符串转换为相应的数据类型、执行计算和执行任意有效的 Python 代码。         然而,使用 eval() 函数需要谨慎,因为它可以执行任意的代码,可能导

    2024年04月14日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包