.
.
letconstvar
var let . let var, var let .
var message = ".";
alert(message); // .
var let const . var , var .
.
. var let var . .
var .
var . .
:
if (true) {
var test = true; // 'let' 'var' .
}
alert(test); // true(if )
var test . .
var test let test , test if .
if (true) {
let test = true; // 'let'
}
alert(test); // Error: test is not defined
. var .
for (var i = 0; i < 10; i++) {
// ...
}
alert(i); // 10, 'i' .
, var .
function sayHi() {
if (true) {
var phrase = "Hello";
}
alert(phrase); // .
}
sayHi();
alert(phrase); // Error: phrase is not defined
, var if, for . . var .
var
let .
let user;
let user; // SyntaxError: 'user' has already been declared
var . var .
var user = "Pete";
var user = "John"; // "var" ( ).
// ... .
alert(user); // John
var
var . .
var (, ).
.
function sayHi() {
phrase = "Hello";
alert(phrase);
var phrase;
}
sayHi();
var phrase .
function sayHi() {
var phrase;
phrase = "Hello";
alert(phrase);
}
sayHi();
, .
function sayHi() {
phrase = "Hello"; // (*)
if (false) {
var phrase;
}
alert(phrase);
}
sayHi();
'(hoisting)' . var (hoisted) (hoist . ).
if (false) , . if var sayHi (*) phrase .
.
.
function sayHi() {
alert(phrase);
var phrase = "Hello";
}
sayHi();
var phrase = "Hello" .
- (
var) - (
=)
() . .
function sayHi() {
var phrase; // .
alert(phrase); // undefined
phrase = "Hello"; // .
}
sayHi();
var , var . undefined.
alert phrase . undefined .
var . var . var . ' (immediately-invoked function expressions)'. IIFE .
. .
IIFE .
(function() {
let message = "Hello";
alert(message); // Hello
})();
, . .
, (function {}) . . 'function . . .
//
function() { // <-- Error: Function statements require a function name
let message = "Hello";
alert(message); // Hello
}();
" ?" . .
// .
function go() {
}(); // <-- .
. , .
, .
// IIFE
(function() {
alert(" ");
})();
(function() {
alert(" ");
}());
!function() {
alert(" NOT ");
}();
+function() {
alert(" ");
}();
. .
var let const .
var.var( ) .
, .
var . let . let const .
<code>,<pre>. 10 plnkr, JSBin, codepen .