Tôi nên kiểm tra như thế nào nếu một biến được xác định?Kiểm tra nếu một biến được xác định trong javascript?
if //variable is defined
//do this
else
//do this
Tôi nên kiểm tra như thế nào nếu một biến được xác định?Kiểm tra nếu một biến được xác định trong javascript?
if //variable is defined
//do this
else
//do this
if (typeof variable !== 'undefined') {
// ..
}
else
{
// ..
}
tìm lời giải thích thêm ở đây:
Bạn có thể sử dụng một cái gì đó như thế này
if (typeof varname != 'undefined')
{
//do this
}
else
{
//do this
}
Bạn chỉ cần kiểm tra các loại.
if(typeof yourVar !== "undefined"){
alert("defined");
}
else{
alert("undefined");
}
Sử dụng toán tử in
.
'myVar' in window; // for global variables only
typeof
kiểm tra sẽ trở lại đúng đối với một biến nếu,
undefined
, hoặcVí dụ sau sẽ minh họa điểm thứ hai và thứ ba.
// defined, but not initialized
var myVar;
typeof myVar; // undefined
// defined, and initialized to undefined
var myVar = undefined;
typeof myVar; // undefined
Bạn có thể sử dụng * trong cửa sổ * chỉ trong trường hợp đặc biệt của các biến toàn cục vì chúng cũng được tạo thuộc tính của đối tượng chung. Các biến cục bộ không có đối tượng biến có thể thay đổi như vậy. Giả sử rằng có một đối tượng cửa sổ có thể là hợp lý cho các trình duyệt nhưng nói chung không phải là điều cần thiết. – RobG
@RobG - nó không phải là 'cửa sổ' hoặc đối tượng chung. Bất kỳ đối tượng nào cũng có thể được sử dụng ở đây. Bạn đã nêu ra một điểm tốt về các biến được định nghĩa cục bộ không thể truy cập tại đây. Tôi sẽ được quan tâm trong việc tìm ra nếu có một cách để xác định undefinedness cho các biến địa phương chỉ dựa trên các tiêu chí đầu tiên tôi có. – Anurag
Nếu bạn đang nói về các biến và phạm vi, thì bạn chỉ có thể phân biệt giữa các biến toàn cục (vì chúng là các thuộc tính của đối tượng chung) và các biến còn lại. Trong một hàm lồng nhau, không thể biết liệu một định danh là một biến hàm cục bộ hay bên ngoài bởi vì bạn không thể truy cập các đối tượng biến có liên quan. Độ phân giải thuộc tính đối tượng là một điều khác. – RobG
Sử dụng! == để so sánh nghiêm ngặt và hiệu suất tốt hơn. –
@ AmericanYak — trong * typeof * kiểm tra thuật toán để giải quyết ['=='] (http://ecma-international.org/ecma-262/5.1/#sec-11.9.3) và ['=== '] (http://ecma-international.org/ecma-262/5.1/#sec-11.9.6) giống hệt nhau vì cả hai giá trị đều có cùng Kiểu (chuỗi), do đó hiệu suất tốt hơn đến từ đâu? – RobG
Điều này không thành công khi vì 'typeof null' là' Object' – nikjohn