Hướng dẫn can you define a variable inside an if statement javascript? - bạn có thể định nghĩa một biến bên trong câu lệnh if javascript không?

Có phải xác định các biến JavaScript bên trong if-statements đúng không?

if(a==1){
    var b = 1;
} else {
    var b = 0;
}

Tôi biết mã trên sẽ hoạt động, tuy nhiên, webmatrix làm nổi bật các biến.

Tôi có nên xác định các biến bên ngoài if-satement không? Hay tùy chọn đầu tiên đúng? Hoặc nó không thực sự quan trọng?

var b = '';
if(a==1){
    b = 1;
} else {
    b = 0;
}

hỏi ngày 17 tháng 7 năm 2012 lúc 23:05Jul 17, 2012 at 23:05

Hướng dẫn can you define a variable inside an if statement javascript? - bạn có thể định nghĩa một biến bên trong câu lệnh if javascript không?

Kể từ bản phát hành chính thức của ES2017 Spec (2017-07-08), ECMAscript không hỗ trợ phạm vi khối thực hiện bằng cách sử dụng từ khóa let hoặc const.does support true block scope now using the let or const keywords.


Vì Ecmascript không có phạm vi khối nhưng phạm vi chức năng, nên việc khai báo bất kỳ biến nào trên đỉnh của bối cảnh chức năng của bạn.

Mặc dù bạn có thể thực hiện các khai báo biến và chức năng tại bất kỳ điểm nào trong bối cảnh chức năng, nhưng nó rất khó hiểu và mang lại một số đau đầu kỳ lạ nếu bạn không nhận thức đầy đủ về hậu quả.

Ví dụ đau đầu:

var foo = 10;

function myfunc() {
    if (foo > 0) {
        var foo = 0;
        alert('foo was greater than 0');
    } else {
        alert('wut?');
    }
}

Đoán xem, chúng ta đang nhận được một 'wut?' Cảnh báo khi gọi myfunc ở đây. Đó là bởi vì một trình thông dịch ECMAScript sẽ tự động phát vào bất kỳ tuyên bố và chức năng nào của ____77 lên đỉnh của bối cảnh. Về cơ bản, foo được khởi tạo thành undefined trước lần đầu tiên

var b = '';
if(a==1){
    b = 1;
} else {
    b = 0;
}
0.

Đọc thêm: Phạm vi JavaScript và Hoisting

Đã trả lời ngày 17 tháng 7 năm 2012 lúc 23:07Jul 17, 2012 at 23:07

Hướng dẫn can you define a variable inside an if statement javascript? - bạn có thể định nghĩa một biến bên trong câu lệnh if javascript không?

JandyjandyjAndy

227K56 Huy hiệu vàng302 Huy hiệu bạc356 Huy hiệu Đồng56 gold badges302 silver badges356 bronze badges

2

Lưu ý rằng ECMAScript 6 không hỗ trợ các biến cấp khối bằng cách sử dụng từ khóa 'var'. Mặc dù các biến được khai báo với 'var' được nâng lên là phạm vi chức năng bất kể chúng được khai báo ở đâu, nhưng những biến được xác định bằng cách sử dụng 'LET' chỉ được đưa vào khối kèm theo.

Đã trả lời ngày 18 tháng 1 năm 2017 lúc 23:49Jan 18, 2017 at 23:49

Farhadffarhadffarhadf

1.8883 huy hiệu vàng19 Huy hiệu bạc27 Huy hiệu đồng3 gold badges19 silver badges27 bronze badges

Đặt một var bên trong một câu lệnh IF không chống lại "các quy tắc" của ngôn ngữ, nhưng điều đó có nghĩa là, vì var phát, VAR sẽ được xác định bất kể điều kiện của câu lệnh IF có được thỏa mãn hay không.

Đã trả lời ngày 17 tháng 7 năm 2012 lúc 23:09Jul 17, 2012 at 23:09

1

Bởi vì các biến của JavaScript có phạm vi cấp độ chức năng, ví dụ đầu tiên của bạn đang được điều chỉnh lại một cách hiệu quả biến của bạn, điều này có thể giải thích lý do tại sao nó được làm nổi bật.

Trên các phiên bản cũ của Firefox, chế độ JavaScript nghiêm ngặt của nó được sử dụng để cảnh báo về sự điều chỉnh lại này, tuy nhiên một trong những nhà phát triển của nó đã phàn nàn rằng nó chật chội phong cách của anh ấy nên cảnh báo đã bị tắt. (Các phiên bản hiện tại của Firefox hỗ trợ cú pháp khai báo biến cấp khối.)

Đã trả lời ngày 17 tháng 7 năm 2012 lúc 23:11Jul 17, 2012 at 23:11

NeilneilNeil

53,7K8 Huy hiệu vàng59 Huy hiệu bạc72 Huy hiệu đồng8 gold badges59 silver badges72 bronze badges

Xem hàm

var b = '';
if(a==1){
    b = 1;
} else {
    b = 0;
}
1 về phạm vi của các biến trong JavaScript là gì?

Tính đến năm 2012, không có phạm vi cấp độ khối trong JavaScript. Vì vậy, phiên bản đầu tiên của bạn là tốt: các biến được xác định trong phạm vi bên ngoài khối

var b = '';
if(a==1){
    b = 1;
} else {
    b = 0;
}
2.

Đã trả lời ngày 17 tháng 7 năm 2012 lúc 23:07Jul 17, 2012 at 23:07

Jandyjandyhcarver

227K56 Huy hiệu vàng302 Huy hiệu bạc356 Huy hiệu Đồng4 gold badges40 silver badges67 bronze badges

3

Gần đây tôi được bảo không tuyên bố các biến của tôi bên trong một khối IF.

if (condition) {
    var foo = { bar: 'abcd' };
}
//bunch of code.

Tuy nhiên, JavaScript không có chặn phạm vi. Tôi hiểu rằng nếu điều kiện không đúng, Foo sẽ không có gì và làm điều gì đó như foo.bar sau đó trong mã sẽ ném cho tôi không thể đọc được một lỗi không xác định.

Điều đó đang được nói, có sai không khi làm những gì tôi đã làm bằng thông số kỹ thuật ES6?

Bạn có thể xác định một biến trong một câu lệnh IF?

Nếu bạn chưa quen với cú pháp được sử dụng trong mẫu mã, nếu (int i = 5) {là một cách hoàn toàn hợp lệ để khai báo và xác định một biến, thì hãy sử dụng nó bên trong câu lệnh IF đã cho. Nó cho phép chúng tôi viết mã terser, rõ ràng hơn, đồng thời tránh giới hạn phạm vi của một biến.if (int i = 5) { is a perfectly valid way of declaring and defining a variable, then using it inside the given if statement. It allows us to write terser, clearer code, while also avoiding limiting the scope of a variable.

Bạn có thể xác định một biến bên trong một hàm không?

Phạm vi là một khu vực của chương trình và nói rộng rãi có ba vị trí, trong đó các biến có thể được khai báo: bên trong một hàm hoặc một khối được gọi là các biến cục bộ, trong định nghĩa của các tham số hàm được gọi là tham số chính thức. Bên ngoài tất cả các chức năng được gọi là biến toàn cầu.Inside a function or a block which is called local variables, In the definition of function parameters which is called formal parameters. Outside of all functions which is called global variables.

Bạn có thể khai báo một biến trong một hàm javascript không?

Một hàm trong JavaScript xác định một phạm vi cho các biến được khai báo bằng Var, LET và Const.Bất kỳ biến nào được khai báo trong chức năng đó chỉ có thể truy cập được từ hàm đó và bất kỳ chức năng lồng nhau nào.Một khối mã (nếu, cho, v.v.) chỉ định phạm vi cho các biến được khai báo với các từ khóa LET và const. . Any variable declared within that function is only accessible from that function and any nested functions. A code block ( if , for , etc.) defines a scope only for variables declared with the let and const keywords.

Bạn có thể truy cập một biến bên trong một hàm javascript không?

JavaScript có phạm vi chức năng: Mỗi hàm tạo ra một phạm vi mới.Các biến được xác định bên trong một hàm không thể truy cập (có thể nhìn thấy) từ bên ngoài hàm.Các biến được khai báo với var, LET và const khá giống nhau khi được khai báo bên trong một hàm.Variables defined inside a function are not accessible (visible) from outside the function. Variables declared with var , let and const are quite similar when declared inside a function.