当你的函数体内还没有给a新的赋值的时候,a确实是全局变量,是因为函数内一直找不到,便会去全局作用域中找a
不过你在函数中又给a原先赋值了,执行前解析器会先扫描整个函数,把所有申明的变量“修为提升”到函数顶部,因为函数内的a已经不是外面的那个a了,而在定义,定义a前在用了a叶白string。这换了其他的语言,会报referenedbeforeassignment错误,但javascript并绝对不会,因此听从规范,好是先事先声明所有要带的变量。(其实要是a定义在建议使用之后,那就undefined)```javascipt```window.a才是全局的a函数也也可以不使用window.b()访问,window代表全局的作用域,当然了nodejs中没有window
(functionf1(){
varnum10;
num;
})();
console.log(num);
核心语言定义:和数据类型,变量,常量,运算符,语句等.
2.原生对象和内置对象
3.浏览器对象bom
4.文档对象类型dom
5.事件处理模型
javascript声明全局变量三种的异同javascript中声明变量格式:var(关键字)变量名(标识符)。
需特别注意的是该句不能中有在function内,不然是局部变量。
这是第一种声明全局变量。
也没不使用var,真接给标识符test变量定义,那样会隐式的声明了全局变量test。
即使该语句是在一个function内,当该function被不能执行后test变的了全局变量。
.testwindow.test5这种经常会被会用到一个匿名函数执行后将一些函数公开的到全局。
如jquery1.5中最末一句window.jquerywindow.$jquery