Có sự khác biệt nào giữa typeof (myVariable)
so với typeof myVariable
không?Tại sao "typeof" không cần dấu ngoặc đơn?
Cả hai công việc, nhưng đến từ PHP, tôi không hiểu tại sao chức năng này có thể sử dụng dấu ngoặc đơn hay không.
Có sự khác biệt nào giữa typeof (myVariable)
so với typeof myVariable
không?Tại sao "typeof" không cần dấu ngoặc đơn?
Cả hai công việc, nhưng đến từ PHP, tôi không hiểu tại sao chức năng này có thể sử dụng dấu ngoặc đơn hay không.
Từ khóa typeof
đại diện cho một nhà điều hành trong Javascript
lập trình.
Định nghĩa chính xác cho typeof
điều hành trong specification là:
typeof[(]expression[)] ;
Đây là lý do đằng sau việc sử dụng typeof
như typeof(expression)
hoặc typeof expression
.
Đến với lý do tại sao nó đã được triển khai như vậy có thể để cho nhà phát triển xử lý mức độ hiển thị trong mã của anh ấy. Như vậy, chúng ta có thể sử dụng một tuyên bố có điều kiện sạch sử dụng typeof:
if (typeof myVar === 'undefined')
// ...
;
Hoặc nêu một biểu thức phức tạp hơn bằng cách sử dụng ()
vì lợi ích của khả năng đọc:
var isTrue = (typeof (myVar = anotherVar) !== 'undefined') && (myVar === true));
EDIT:
Trong một số trường hợp, sử dụng dấu ngoặc đơn với toán tử typeof
làm cho mã được viết ít dễ bị mơ hồ hơn.
Lấy ví dụ biểu thức sau đây mà toán tử typeof
được sử dụng mà không có dấu ngoặc đơn. typeof
sẽ trả về loại kết quả của phép nối giữa một chuỗi ký tự trống và một số hay kiểu chuỗi ký tự?
typeof "" + 42
Nhìn vào định nghĩa của các nhà điều hành đã nêu ở trên và precedence of the operators typeof
and +
, dường như sự biểu hiện trước đó là tương đương với:
typeof("") + 42 // Returns the string `string42`
Trong trường hợp này, sử dụng dấu ngoặc đơn với typeof
sẽ mang lại cho rõ ràng hơn để những gì bạn đang cố gắng thể hiện:
typeof("" + 42) // Returns the string `string`
Nó không phải là một chức năng. –
Để thêm, nó là toán tử tương tự như '+' hoặc '-' https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof –
Bởi vì' typeof' là toán tử, không phải một hàm. – jmoerdyk