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ị?
Tóm Tắt
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
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
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.
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à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!