25.函数例题-预解析 作用域 函数变量优先级全局变量污染(直接在全局声明 函数里的变量没声明)但是函数里的变量没声明造成的全局变量污染有个前提,函数要被调用)
Posted YZD无敌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了25.函数例题-预解析 作用域 函数变量优先级全局变量污染(直接在全局声明 函数里的变量没声明)但是函数里的变量没声明造成的全局变量污染有个前提,函数要被调用)相关的知识,希望对你有一定的参考价值。
1. return foo() foo 没有return值,故为undefined.
2.
a b 在函数作用域内,外界找不到 var a = b =3; b 也算用var 声明了,只不过b 是在全局隐式var 了一个b ,在函数内部找不到变量的情况下就去全局找,全局找不到报错。
语法有错误,程序一句都不会执行,执行阶段有错误,会执行没错的代码,在执行出错的地方报错。
函数或则匿名函数体内声明变量是为了避免全局变量污染
重要例题:
函数没执行,全局没找到 b报错。没声明 或者没赋值 打印的时候都为undefined,但是没声明与没赋值不同同时出现在一个变量上,同时出现就报错。
函数执行,b 没声明,会在全局隐式声明并赋值var b =20 放在GO 里,函数AO 消失之后,console.log会从全局里找b ,发现值为20. 函数里的变量没声明会引发全局变量污染。
♥注意:函数里的变量没声明造成的全局变量污染有个前提,函数要被调用
重要:注意执行顺序以及相关注意事项:对于变量未声明 未赋值同时出现就报错,出现一个报undefined,函数内部预解析未声明的会在GO声明为全局变量造成全局变量污染,但是前提未声明的变量所在函数要被调用,否则报错。
报错。因为console.log(c)在outer(),函数调用之前,也就是c被隐式声明为全局变量之前故报错。
页面关闭 GO 关闭 功能没执行或者执行完了 AO 关闭
以上是关于25.函数例题-预解析 作用域 函数变量优先级全局变量污染(直接在全局声明 函数里的变量没声明)但是函数里的变量没声明造成的全局变量污染有个前提,函数要被调用)的主要内容,如果未能解决你的问题,请参考以下文章