刚开始学习js 对于Js的执行过程有很大的疑虑
创建和引用 是否 是完全不同的概念 下面贴出了自己的实验代码和猜测 想请问各位 自己的猜测是否正确 如果是错的 那么到底是如何的一个过程呢?
全局变量是不是一块公共的区域 里面有着一块块的变量?
var num = 123;
function f1() {
console.log( num );
}
function f2() {
num = 456;
f1();
}
f2();
console.log(num);
//首先执行f2 看见一个全局变量num 他得去全局变量的区域内找找有没有 有就覆盖修改 没有就创建 找到了 在外面 虽然他用var 但并没有fn包含他 所以也是全局变量 修改他 之后f1输出为456
var num = 123;
function f1() {
console.log( num+"f1" );
}
function f2() {
var num = 456;
f1(num);
console.log(num+"f2");
}
f2();
//猜测 运行到F2的时候 因为声明的是局部变量 首先在自己的函数域内查找 num 没找到 那么就创建在函数域内创建一个num 为 456
//所以二者的差别就在于 一个去外面找了 找到了修改他 而另外一个呢 没有去外面找自己创建了一个
//在创建的情况下 他会在根据变量的类型 在公共全局变量里寻找是否有已经定义的变量 有>修改 无>创建
// 如果是局部变量 在自己的函数域内去创建 or 修改
//但是变量的引用不一样 如果找到了>使用他 没找到>通过函数链 去上一级寻找
//所以在引用和创建的时候 他的行为是不同的
慕运维8079593
相关分类