Javascript 参数的优先级 2018-09-19 3:08 pm | 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})()