作用域要从两个步骤去理解这个概念:
1>首先要找到诸如 var function 参数 之类
alert(a);var a = 3;
alert(a)是 ‘未定义‘
所有的变量,在正式运行代码前,都提前赋了一个值:未定义
fn1 = function fn1(){ alert(2); }
所有的函数,在正式运行代码之前,都是整个函数块
遇到重名的:只留一个,变量和函数重名了,就只留下函数
2>逐行解读代码:
表达式:= + - * / % ++ -- ! 参数……
表达式可以修改预解析的值!
alert(a); //function a (){ alert(4); } var a = 1; alert(a); //1 function a (){ alert(2); } alert(a); //1 var a = 3; alert(a); //3 function a (){ alert(4); } alert(a); //3 a(); //a is not a function
var a = 1; function fn1(){ alert(a); //undefined var a = 2; } fn1(); alert(a); //1
var a = 1; function fn1(){ alert(a); a = 2; } fn1(); //1 alert(a); //2
var a = 1; function fn1(a){ //参数a = var a alert(a); //undefined a = 2; } fn1(); alert(a); //2
var a = 1; function fn1(a){ alert(a); // 1 a = 2; } fn1(a); alert(a); // 1
原文地址:https://www.cnblogs.com/gao-xiaomeng/p/9553135.html
时间: 2024-10-08 05:33:44