Hướng dẫn what is eval error in javascript? – lỗi eval trong javascript là gì?

Trình xây dựng EvalError() tạo ra một thể hiện mới.EvalError() constructor creates a new EvalError instance.

Nội dung chính Show

  • Thông số
  • Tạo một EvalError
  • Thông số kỹ thuật
  • Tính tương thích của trình duyệt web
  • Hàm eval () là gì?
  • Chức năng Eval trong ví dụ JavaScript là gì?
  • JavaScript xấu có xấu không?
  • Tại sao eval không được khuyến nghị?

Cú pháp

new EvalError()
new EvalError(message)
new EvalError(message, options)
new EvalError(message, fileName)
new EvalError(message, fileName, lineNumber)

EvalError()
EvalError(message)
EvalError(message, options)
EvalError(message, fileName)
EvalError(message, fileName, lineNumber)

Lưu ý: EvalError() có thể được gọi có hoặc không có

try {
  throw new EvalError("Hello", "someFile.js", 10);
} catch (e) {
  console.log(e instanceof EvalError); // true
  console.log(e.message); // "Hello"
  console.log(e.name); // "EvalError"
  console.log(e.fileName); // "someFile.js"
  console.log(e.lineNumber); // 10
  console.log(e.columnNumber); // 0
  console.log(e.stack); // "@Scratchpad/2:2:9\n"
}

1. Cả hai đều tạo ra một thể hiện ____99 mới. EvalError()
can be called with or without

try

{

throw

new

EvalError

(

"Hello"

,

"someFile.js"

,

10

)

;

}

catch

(

e

)

{

console

.

log

(

e

instanceof

EvalError

)

;

// true

console

.

log

(

e

.

message

)

;

// "Hello"

console

.

log

(

e

.

name

)

;

// "EvalError"

console

.

log

(

e

.

fileName

)

;

// "someFile.js"

console

.

log

(

e

.

lineNumber

)

;

// 10

console

.

log

(

e

.

columnNumber

)

;

// 0

console

.

log

(

e

.

stack

)

;

// "@Scratchpad/2:2:9\n"

}

1. Both create a new EvalError instance.

Thông số

try

{

throw

new

EvalError

(

"Hello"

,

"someFile.js"

,

10

)

;

}

catch

(

e

)

{

console

.

log

(

e

instanceof

EvalError

)

;

// true

console

.

log

(

e

.

message

)

;

// "Hello"

console

.

log

(

e

.

name

)

;

// "EvalError"

console

.

log

(

e

.

fileName

)

;

// "someFile.js"

console

.

log

(

e

.

lineNumber

)

;

// 10

console

.

log

(

e

.

columnNumber

)

;

// 0

console

.

log

(

e

.

stack

)

;

// "@Scratchpad/2:2:9\n"

}

3 Tùy chọn

3 Tùy chọn

Optional

Mô tả có thể đọc được của con người về lỗi.

try

{

throw

new

EvalError

(

"Hello"

,

"someFile.js"

,

10

)

;

}

catch

(

e

)

{

console

.

log

(

e

instanceof

EvalError

)

;

// true

console

.

log

(

e

.

message

)

;

// "Hello"

console

.

log

(

e

.

name

)

;

// "EvalError"

console

.

log

(

e

.

fileName

)

;

// "someFile.js"

console

.

log

(

e

.

lineNumber

)

;

// 10

console

.

log

(

e

.

columnNumber

)

;

// 0

console

.

log

(

e

.

stack

)

;

// "@Scratchpad/2:2:9\n"

}

4 Tùy chọn

4 Tùy chọn

Optional

Một đối tượng có các thuộc tính sau:

try

{

throw

new

EvalError

(

"Hello"

,

"someFile.js"

,

10

)

;

}

catch

(

e

)

{

console

.

log

(

e

instanceof

EvalError

)

;

// true

console

.

log

(

e

.

message

)

;

// "Hello"

console

.

log

(

e

.

name

)

;

// "EvalError"

console

.

log

(

e

.

fileName

)

;

// "someFile.js"

console

.

log

(

e

.

lineNumber

)

;

// 10

console

.

log

(

e

.

columnNumber

)

;

// 0

console

.

log

(

e

.

stack

)

;

// "@Scratchpad/2:2:9\n"

}

5 Tùy chọn

5 Tùy chọn

Optional

Một thuộc tính chỉ ra nguyên nhân cụ thể của lỗi. Khi bắt và ném lại lỗi với thông báo lỗi cụ thể hoặc hữu ích hơn, thuộc tính này có thể được sử dụng để truyền lỗi ban đầu.

try

{

throw

new

EvalError

(

"Hello"

,

"someFile.js"

,

10

)

;

}

catch

(

e

)

{

console

.

log

(

e

instanceof

EvalError

)

;

// true

console

.

log

(

e

.

message

)

;

// "Hello"

console

.

log

(

e

.

name

)

;

// "EvalError"

console

.

log

(

e

.

fileName

)

;

// "someFile.js"

console

.

log

(

e

.

lineNumber

)

;

// 10

console

.

log

(

e

.

columnNumber

)

;

// 0

console

.

log

(

e

.

stack

)

;

// "@Scratchpad/2:2:9\n"

}

6 tùy chọn-tiêu chuẩn

6 tùy chọn-tiêu chuẩn

Optional

Non-standard

Tên của tệp chứa mã gây ra ngoại lệ

try

{

throw

new

EvalError

(

"Hello"

,

"someFile.js"

,

10

)

;

}

catch

(

e

)

{

console

.

log

(

e

instanceof

EvalError

)

;

// true

console

.

log

(

e

.

message

)

;

// "Hello"

console

.

log

(

e

.

name

)

;

// "EvalError"

console

.

log

(

e

.

fileName

)

;

// "someFile.js"

console

.

log

(

e

.

lineNumber

)

;

// 10

console

.

log

(

e

.

columnNumber

)

;

// 0

console

.

log

(

e

.

stack

)

;

// "@Scratchpad/2:2:9\n"

}

7 tùy chọn-tiêu chuẩn

7 tùy chọn-tiêu chuẩn

Optional

Non-standard

Số dòng của mã gây ra ngoại lệ

Ví dụ

EvalError không được sử dụng trong thông số kỹ thuật ECMAScript hiện tại và do đó sẽ không bị ném bởi thời gian chạy. Tuy nhiên, bản thân đối tượng vẫn dành cho khả năng tương thích ngược với các phiên bản trước của thông số kỹ thuật.

Tạo một EvalError

try

{

throw

new

EvalError

(

"Hello"

,

"someFile.js"

,

10

)

;

}

catch

(

e

)

{

console

.

log

(

e

instanceof

EvalError

)

;

// true

console

.

log

(

e

.

message

)

;

// "Hello"

console

.

log

(

e

.

name

)

;

// "EvalError"

console

.

log

(

e

.

fileName

)

;

// "someFile.js"

console

.

log

(

e

.

lineNumber

)

;

// 10

console

.

log

(

e

.

columnNumber

)

;

// 0

console

.

log

(

e

.

stack

)

;

// "@Scratchpad/2:2:9\n"

}

Thông số kỹ thuật

Sự chỉ rõĐặc tả ngôn ngữ Ecmascript # Sec-NativeRror-Construction
# sec-nativeerror-constructors

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm

Đã trả lời ngày 26 tháng 7 năm 2020 lúc 16:00

BalajibalajiFeb 7, 2011 at 15:51

7.9195 Huy hiệu vàng36 Huy hiệu bạc44 Huy hiệu đồngJesus Ramos

22.7K10 Huy hiệu vàng55 Huy hiệu bạc88 Huy hiệu Đồng10 gold badges55 silver badges88 bronze badges

Bạn có thể kiểm tra xem liệu lỗi có thực sự là một cú pháp hay không.

try {
    eval(code); 
} catch (e) {
    if (e instanceof SyntaxError) {
        alert(e.message);
    }
}

Đã trả lời ngày 7 tháng 2 năm 2011 lúc 15:56Feb 7, 2011 at 15:56

Hướng dẫn what is eval error in javascript? - lỗi eval trong javascript là gì?

ChaopandionchaospandionChaosPandion

76.4K18 Huy hiệu vàng117 Huy hiệu bạc155 Huy hiệu đồng18 gold badges117 silver badges155 bronze badges

0

Khi sử dụng thử để bắt để bắt một loại lỗi cụ thể, người ta nên đảm bảo rằng các loại ngoại lệ khác không bị triệt tiêu. Mặt khác, nếu mã được đánh giá ném một loại ngoại lệ khác, nó có thể biến mất và gây ra hành vi bất ngờ của mã.

Tôi sẽ đề nghị viết mã như thế này:

try {
    eval(code); 
} catch (e) {
    if (e instanceof SyntaxError) {
        alert(e.message);
    } else {
        throw e;
    }
}

Xin lưu ý phần “khác”.

Clonkex

3.1766 huy hiệu vàng38 Huy hiệu bạc52 Huy hiệu đồng6 gold badges38 silver
badges52 bronze badges

Đã trả lời ngày 13 tháng 10 năm 2014 lúc 19:01Oct 13, 2014 at 19:01

2

Theo tài liệu Mozilla cho

try

{

throw

new

EvalError

(

"Hello"

,

"someFile.js"

,

10

)

;

}

catch

(

e

)

{

console

.

log

(

e

instanceof

EvalError

)

;

// true

console

.

log

(

e

.

message

)

;

// "Hello"

console

.

log

(

e

.

name

)

;

// "EvalError"

console

.

log

(

e

.

fileName

)

;

// "someFile.js"

console

.

log

(

e

.

lineNumber

)

;

// 10

console

.

log

(

e

.

columnNumber

)

;

// 0

console

.

log

(

e

.

stack

)

;

// "@Scratchpad/2:2:9\n"

}

9:

Đánh giá trả về giá trị của biểu thức cuối cùng được đánh giá.

Vì vậy, tôi nghĩ rằng bạn có thể hết may mắn. Tài liệu tương tự này cũng khuyến nghị không sử dụng

try

{

throw

new

EvalError

(

"Hello"

,

"someFile.js"

,

10

)

;

}

catch

(

e

)

{

console

.

log

(

e

instanceof

EvalError

)

;

// true

console

.

log

(

e

.

message

)

;

// "Hello"

console

.

log

(

e

.

name

)

;

// "EvalError"

console

.

log

(

e

.

fileName

)

;

// "someFile.js"

console

.

log

(

e

.

lineNumber

)

;

// 10

console

.

log

(

e

.

columnNumber

)

;

// 0

console

.

log

(

e

.

stack

)

;

// "@Scratchpad/2:2:9\n"

}

9:

Eval () là một chức năng nguy hiểm, thực thi mã được thông qua với các đặc quyền của người gọi. Nếu bạn chạy eval () với một chuỗi có thể bị ảnh hưởng bởi một bên độc hại, cuối cùng bạn có thể chạy mã độc trên máy của người dùng với các quyền của trang web / tiện ích mở rộng của bạn. Quan trọng hơn, mã bên thứ ba có thể thấy phạm vi mà eval () được gọi, điều này có thể dẫn đến các cuộc tấn công có thể theo cách mà hàm tương tự không dễ bị ảnh hưởng.

Vì vậy, bất kể, xin vui lòng lưu ý về các rủi ro trước khi sử dụng chức năng này.

Đã trả lời ngày 7 tháng 2 năm 2011 lúc 15:56Feb 7, 2011 at 15:56

Hướng dẫn what is eval error in javascript? - lỗi eval trong javascript là gì?

Justin Ethierjustin EthierJustin Ethier

129K51 Huy hiệu vàng226 Huy hiệu bạc282 Huy hiệu Đồng51 gold badges226 silver badges282 bronze badges

1

Bạn có thể sử dụng JSLINT có chứa trình phân tích cú pháp JavaScript được viết bằng JavaScript. Nó sẽ cung cấp cho bạn rất nhiều thông tin về mã của bạn, nó có thể được cấu hình để thoải mái hơn hay không, v.v.

Hướng dẫn what is eval error in javascript? - lỗi eval trong javascript là gì?

bru02

3602 Huy hiệu bạc10 Huy hiệu đồng2 silver badges10 bronze badges

Đã trả lời ngày 7 tháng 2 năm 2011 lúc 16:05Feb 7, 2011 at 16:05

Pablo Grisafipablo GrisafiPablo Grisafi

5.0291 Huy hiệu vàng18 Huy hiệu bạc29 Huy hiệu đồng1 gold badge18 silver badges29 bronze badges

0

Để tiếp tục sử dụng mã sau khi xác thực, tôi sử dụng ví dụ sau:

var validCode = 1;
try {
  eval( jsCode );        /* Code test */
} catch (e) {
  if (e instanceof SyntaxError) {
    validCode = 0;
    console.warn(e.message);
  }
} finally {
  if(validCode){
    "do some magic"
  }
}

Đã trả lời ngày 5 tháng 4 năm 2020 lúc 1:03Apr 5, 2020 at 1:03

SeanseanSean

374 huy hiệu đồng4 bronze badges

Mã dưới đây được đăng bởi Go-Oleg nhờ anh ấy

Mã này xác thực cú pháp chính xác nếu không có lỗi

Lưu ý: Mã không phải là lỗi thời gian chạy Vaildate vì nó sử dụng trình phân tích cú pháp AST để phân tích cú pháp chính xác.

Để cài đặt

npm install esprima --save

code:

var esprima = require('esprima');
var userStringToTest = 'var a = 50;';

var isValid = isValidJs(userStringToTest);

if(isValid) {
  alert('its validated!');
}
else {
  console.log('its NOT valid syntax!');
}

function isValidJs(testString) {
  var isValid = true;
  try {
    esprima.parse(testString);
  }
  catch(e) {
    isValid = false;
  }
  return isValid;
}

Đã trả lời ngày 26 tháng 7 năm 2020 lúc 16:00Jul 26, 2020 at 16:00

BalajibalajiBalaji

7.9195 Huy hiệu vàng36 Huy hiệu bạc44 Huy hiệu đồng5 gold badges36 silver badges44 bronze badges

Đặt giá trị mong muốn của bạn cho B

    //b="4+6";
    try { eval(b); } 
    catch (err) {
       if (err instanceof SyntaxError)
          document.getElementById('screen').innerHTML = "<i>Syntax Error</i>";

        /*In html make a div and put id "screen" in it for this to work
        you can also replace this line with document.write or alert as per your wish*/
    }
    finally {
         document.getElementById('screen').innerHTML = eval(b); //outputs answer
    }

Đã trả lời ngày 24 tháng 2 năm 2021 lúc 6:09Feb 24, 2021 at 6:09

Hướng dẫn what is eval error in javascript? - lỗi eval trong javascript là gì?

Hàm eval () là gì?

Hàm Eval đánh giá biểu thức chuỗi và trả về giá trị của nó. Ví dụ: Eval (“1 + 1”) Trả về 2. Nếu bạn chuyển đến hàm Eval, một chuỗi chứa tên của hàm, hàm Eval trả về giá trị trả về của hàm.

evaluates the string expression and returns its value

. For example, Eval(“1 + 1”) returns 2. If you pass to the Eval function a string that contains the name of a function, the Eval function returns the return value of the function.

Chức năng Eval trong ví dụ JavaScript là gì?

Eval () là một thuộc tính chức năng của đối tượng toàn cầu.Đối số của hàm eval () là một chuỗi.Nó sẽ đánh giá chuỗi nguồn là một cơ thể tập lệnh, có nghĩa là cả hai câu và biểu thức đều được cho phép.Nó trả về giá trị hoàn thành của mã.

a function property of the global object

. The argument of the eval() function is a string. It will evaluate the source string as a script body, which means both statements and expressions are allowed. It returns the completion value of the code.

JavaScript xấu có xấu không?

Hàm Eval và người thân của nó (chức năng, SetTimeout và SetInterval) cung cấp quyền truy cập vào trình biên dịch JavaScript.Điều này đôi khi rất hữu ích, nhưng trong hầu hết các trường hợp, nó cho thấy sự hiện diện của mã hóa cực kỳ xấu.Chức năng Eval là tính năng sử dụng sai nhất của JavaScript.

Tại sao eval không được khuyến nghị?

Mã độc hại: Gọi eval có thể làm hỏng máy tính.Ví dụ: nếu bạn sử dụng phía máy chủ Eval và người dùng tinh nghịch quyết định sử dụng vòng lặp vô hạn làm tên người dùng của họ.Chậm khủng khiếp: Ngôn ngữ JavaScript được thiết kế để sử dụng toàn bộ các loại JavaScript (số, hàm, đối tượng, v.v.) Không chỉ là chuỗi!

: invoking eval can crash a computer. For example: if you use eval server-side and a mischievous user decides to use an infinite loop as their username. Terribly slow : the JavaScript language is designed to use the full gamut of JavaScript types (numbers, functions, objects, etc)… Not just strings!