Biểu thức bên trái hàm trong JavaScript
Hãy xem xét đoạn mã sau:
+function func() {
console.log('!');
}
Như bạn đã biết, hàm này là một biểu thức hàm, mặc dù nó có tên (chúng ta đã xác định rằng việc có tên không phải là tiêu chí). Bỏ dấu cộng này đi - và chúng ta sẽ có Function Declaration:
function func() {
console.log('!');
}
Hãy đặt + trên dòng trước
hàm - nó sẽ lại trở thành Function Expression:
+
function func() {
console.log('!');
}
Bây giờ sau dấu cộng, hãy đặt số 1
và dấu chấm phẩy - hàm của chúng ta sẽ trở thành Function
Declaration:
+1;
function func() {
console.log('!');
}
Tại sao lại như vậy: bởi vì trên dòng đầu tiên viết một lệnh hoàn chỉnh, được kết thúc bằng dấu chấm phẩy. Do đó, lệnh này không ảnh hưởng gì đến hàm của chúng ta.
Trên thực tế, dấu chấm phẩy có thể bỏ đi, vì trong JavaScript nó không bắt buộc - hàm vẫn sẽ là Function Declaration:
+1
function func() {
console.log('!');
}
Nhưng nếu sau 1 chèn thêm một
dấu cộng nữa, thì hàm sẽ trở thành Function Expression:
+1+
function func() {
console.log('!');
}
Tại sao lại như vậy: bởi vì trên dòng đầu tiên là một biểu thức chưa hoàn thành - có dấu cộng và sau nó không có gì. Do đó, trình thông dịch JavaScript cho rằng dấu cộng này thuộc về dòng phía dưới, tức là hàm của chúng ta.
Nếu trên dòng đầu tiên là một biểu thức hoàn chỉnh, thì JavaScript tự động đặt dấu chấm phẩy cho nó và biểu thức này không ảnh hưởng gì đến hàm của chúng ta.
Xác định xem hàm được trình bày là Function Declaration hay Function Expression:
-
function func() {
console.log('!');
}
Xác định xem hàm được trình bày là Function Declaration hay Function Expression:
-1;
function func() {
console.log('!');
}
Xác định xem hàm được trình bày là Function Declaration hay Function Expression:
-1
function func() {
console.log('!');
}
Xác định xem hàm được trình bày là Function Declaration hay Function Expression:
1
function func() {
console.log('!');
}
Xác định xem hàm được trình bày là Function Declaration hay Function Expression:
-1-
function func() {
console.log('!');
}