GUIDE

The road ahead will be long and our climb will be steep

Javascript 参数的优先级

| Comments

1. 全局,function 内

function 内变量使用 var,重名时,局部变量的优先级更高

 1var a1 = 1;
 2(function() {
 3    a1 = 2;
 4    console.log(a1);  // 2
 5})();
 6console.log(a1);  // 2
 7
 8var a2 = 1, a3 = 1;
 9(function() {
10    var a2 = 2, a3;
11    console.log(a2);  // 2
12    console.log(a3);  // undefined
13})();
14console.log(a2);  // 1
15console.log(a3);  // 1

2. 全局,function 的形参,局部变量

function 的局部变量优先级最高,然后是形参,最后是全局变量

 1var a1 = 1;
 2(function(a1) {
 3    console.log(a1);  // 2
 4})();
 5console.log(a1);  // 1
 6
 7var a2 = 1;
 8(function(a2) {
 9    a2 = 3
10    console.log(a2);  // 3
11})(2);
12console.log(a2);  // 1
13
14var a3 = 1, a4 = 1;
15(function(a3, a4) {
16    var a3, a4 = 3
17    console.log(a3);  // 22
18    console.log(a4);  // 3
19})(22, 33)
20console.log(a3);  // 1
21console.log(a4);  // 1

3. var 和 function 的前置

使用 var 和 function 定义的变量和函数,运行时会前置,率先执行;
但是 var 定义并赋值一个变量时,只会把定义前置。

 1(function() {
 2    console.log(a1);  // undefined
 3    console.log(a2);  // ƒ a2() {}
 4    var a1;
 5    function a2() {}
 6})()
 7
 8(function() {
 9    console.log(a1);  // undefined
10    var a1 = 1;
11})()

Comments