美文网首页一点一滴积累JavaScript
JavaScript:标准内置对象函数属性--eval()

JavaScript:标准内置对象函数属性--eval()

作者: 木子皿的简书 | 来源:发表于2019-08-26 19:53 被阅读0次

☆  全局函数可以直接调用,不需要在调用时指定所属对象,执行结束后会将结果直接返回给调用者。


eval()

eval() 函数会将传入的字符串当做 JavaScript 代码进行执行。


语法

eval(string)


参数

◆ string

一个表示 JavaScript 表达式、语句或一系列语句的字符串。表达式可以包含变量与已存在对象的属性。


返回值

返回字符串中代码的返回值。如果返回值为空,则返回 undefined。


描述

eval() 是全局对象的一个函数属性。

eval() 的参数是一个字符串。如果字符串表示的是表达式,eval() 会对表达式进行求值。如果参数表示一个或多个 JavaScript 语句,那么eval() 就会执行这些语句。注意不要用 eval() 来执行一个算术表达式:因为 JavaScript 可以自动为算术表达式求值。

如果 eval() 的参数不是字符串, eval() 会将参数原封不动地返回。

如果你间接的使用 eval(),比如通过一个引用来调用它,而不是直接的调用 eval。这就意味着,例如,下面的代码的作用声明创建一个全局函数,并且 eval 中的这些代码在执行期间不能在被调用的作用域中访问局部变量。

function test() {

var x = 2, y = 4;

console.log(eval('x + y'));  // 直接调用,使用本地作用域,结果是 6

var geval = eval; // 等价于在全局作用域调用

console.log(geval('x + y')); // 间接调用,使用全局作用域,throws ReferenceError 因为`x`未定义

(0, eval)('x + y'); // 另一个间接调用的例子

}

eval() 是一个危险的函数, 它使用与调用者相同的权限执行代码。如果你用 eval() 运行的字符串代码被恶意方(不怀好意的人)修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。更重要的是,第三方代码可以看到某一个 eval() 被调用时的作用域,这也有可能导致一些不同方式的攻击。

eval() 通常比其他替代方法更慢,因为它必须调用 JS 解释器,而许多其他结构则可被现代 JS 引擎进行优化。

相关文章

  • JavaScript:标准内置对象函数属性--eval()

    ☆ 全局函数可以直接调用,不需要在调用时指定所属对象,执行结束后会将结果直接返回给调用者。 eval() eval...

  • JavaScript:标准内置对象函数属性--parseFloa

    ☆全局函数可以直接调用,不需要在调用时指定所属对象,执行结束后会将结果直接返回给调用者。 parseFloat()...

  • 前端单词记忆(个人向)

    property 指 对象属性; eval() 指 函数计算 JavaScript 字符串,并把它作为脚本代码来执...

  • 饥人谷25课讲浏览器api

    JavaScript中有很多内置的对象 比如说全局对象Windows 全局函数 公用的属性藏在哪 toString...

  • JavaScript内置对象(22)

    JavaScript内置对象 全局对象window 全局函数 公共属性隐藏在哪里 toString从哪里来(原型链...

  • 面经之js

    1.eval是做什么的?为什么尽量避免使用eval? Javascript全局对象,eval()函数可以计算机某个...

  • 全面认识JavaScript的Math对象

    全面认识JavaScript的Math对象 Math是一个内置对象,它具有数学常数和函数的属性和方法。不是一个函数...

  • JS基础---06 内置对象

    JavaScript基础 1 - 内置对象 1.1 内置对象 1.2 查文档 1.3 Math对象 属性、方法名功...

  • 原型链

    JavaScript在创建对象的时候,都会有一个[[proto]]的内置属性,用于指向创建它的函数对象的proto...

  • OOP

    一、对象 1.三类JavaScript对象和两类属性的区分 内置对象:如数组、函数、日期和正则表达式。 宿主对象:...

网友评论

    本文标题:JavaScript:标准内置对象函数属性--eval()

    本文链接:https://www.haomeiwen.com/subject/qnadectx.html