Home > Web Front-end > JS Tutorial > body text

Let's talk about the usage of eval() function in JavaScript

青灯夜游
Release: 2021-05-25 10:14:41
forward
2734 people have browsed it

This article will introduce you to the usage of the eval() function in JavaScript. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.

Let's talk about the usage of eval() function in JavaScript

#1. What is the use of the eval function?

Call the eval function and its parameters can be interpreted as a javascript program. In other words, eval can execute its parameters as code

.

Example

function f(x) {
    eval('var y=x');
    console.log('y:', y);
}
f('hello');//y:hello
Copy after login

In this example, eval executes its stringparameter var y=xas a single line of code Yes, a local variable y is declared inside function f. This is basically the same execution effect as

function f(x) {
    var y=x;
    console.log('y:', y);
}
f('hello');//y:hello
Copy after login

.

2. Avoid using the eval function to create local variables

Allowing the eval function to interfere with the scope is a very wrong approach. This approach can make a piece of code difficult to understand and no longer safe. The following example gives external callers the ability to modify local variables and change the local scope.

Example

let g = '全局变量'
function f(src) {
    eval(src);
    console.log('g:', g);
}
//以上为源代码
f("var g= '局部变量'");//g:局部变量
f("var y= '局部变量'");//g:全局变量
Copy after login

When we pass a variable y that is not defined in the source code into the eval function , the results of this code execution will become unpredictable.

A simple way to ensure that the eval function does not affect the outer scope is to use nested scopes. ES5's strict mode does this.

Example

let g = '全局变量'
function f(src) {
   (()=> eval(src))();//在嵌套作用域中执行eval
    console.log('g:', g);
}
//以上为源代码
f("var g= '局部变量'");//g:全局变量
f("var y= '局部变量'");//g:全局变量
Copy after login

3. Two calling methods of eval function

3.1 Direct calling method:

When a function call involves the eval identifier, it can be called a direct call. At this time, the executed program (eval's parameters) has full access to the caller's local scope.

Example

const g = '全局变量';
function foo() {
    const g = '局部变量';
    console.log(eval('g'));//直接调用,可以访问到foo的局部作用域,所以输出的是局部变量g
}
foo(); //局部变量
Copy after login

3.2 Indirect calling method:

Bind eval to another variable name, calling eval through this variable is called an indirect call. At this time, the executed program (the parameters of eval) loses the ability to access the local scope. Using the comma operators , , you can achieve a concise way of writing indirect calls.

Example

const g = '全局变量';
function foo2() {
    const g = '局部变量';
    cont test = eval;
    //间接调用,不能访问函数内部的变量g
    console.log(test('g')); //全局变量
    //间接调用简洁方式
    console.log((0, eval)('g'));//全局变量
}
Copy after login

For more programming-related knowledge, please visit: Introduction to Programming! !

The above is the detailed content of Let's talk about the usage of eval() function in JavaScript. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:segmentfault.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template