北京城建建设工程有限公司网站,wordpress 友情链接 插件,微信存储wordpress,茶叶价格网站建设文章目录
前言
一#xff1a;函数作用域 前言 我们刚才提到了#xff0c;在Script标签当中进行定义的变量、对象、函数对象都属于全局作用域#xff0c;全局作用域在页面打开的时候生效在页面关闭的时候失效。
一#xff1a;函数作用域 调用函数时创建函数作用域…文章目录
前言
一函数作用域 前言 我们刚才提到了在Script标签当中进行定义的变量、对象、函数对象都属于全局作用域全局作用域在页面打开的时候生效在页面关闭的时候失效。
一函数作用域 调用函数时创建函数作用域函数执行完毕之后作用域销毁。 没调用一次函数就会生成一个新的函数作用域。
var a 10;function fun(){console.log(a);//10
} 函数作用域是局部的在函数作用域当中可以访问到全局作用域的变量。
function fun(){var b 10;console.log(b);
}console.log(b);//这里会报错。 这样写就有问题了全局无法访问局部的内容。
var a 100;function fun(){var a 10;console.log(a);//10
}console.log(a);//100 当我们在函数作用域当中操作一个变量时会先在自身作用域当中进行寻找。如果没有就前往上一级进行寻找。 上一级不一定是全局哦。函数里边嵌套函数的这种情况里边的函数的上一级就是外层函数的作用域。
function fun(){var a 100;var b 10;function fun2 (){console.log(a);}} 层层往上级进行寻找如果还是没有的话就该报错了。如果想在函数中想访问全局的在变量名字前添加window就行了。 在函数作用域当中使用var声明的变量也有一个声明提前的作用
function fun(){console.log(a);//undefinedvar a 35;
}fun(); 也就是在函数声明也会在函数中所有的代码执行之前被声明但是没有赋值。
var c 35;
function fun(){console.log(c);//35
}
fun(); 但是如果是这样则另当别论了
var c 10;function fun(){console.log(10);//undefinedvar c 20;
}fun(); 这个打印的结果最终是undefined因为同样的变量C有去全全局的有函数作用域的肯定使用函数作用域的函数作用域的基于var声明的会被提前但是不被赋值。所以打印的是undefined。 那么如果不使用var呢
var c 35;function fun(){console.log(10);c 100;
} 这个用C的时候找不到就往上级去找然后最终打印的记过是35
function fun(){d 100;
}console.log(d);//100 在函数中不使用var修饰的话会被声明为全局变量。
var e 23;function fun(e){alert(e);
}fun(); 定义了形参就相当于在函数当中基于var声明了变量