js中函数运行过程不仅仅是单纯的局部变量覆盖全局变量.和函数里面的声明情况有关. 比方: <script> var a =1; function test(){ alert(a); //a为undefined! 这个a并非全局变量.这是由于在function scope里已经声明了(函数体倒数第4行)一个重名的局部变量, //所以全局变量a被覆盖了.这说明了Javascript在运行前会对整个脚本文件的定义部分做完整分析,所以在函数test()运行前, //函数体中的变量a就被指向内部的局部变…
前言 Javascript中的变量定义方式有以下三种方式:1.直接定义变量,var与let均不写: a = 10; 2.使用var关键字定义变量 var a = 10; 3.使用let关键字定义变量 let a = 10; 这三种方式有什么区别呢?JavaScript全局变量和局部变量又是什么呢?可以带着这两个问题往下看. 变量的作用域 变量是有作用域的,大多数语言中的变量的作用域都有全局变量和局部变量之分.首先我们建立一个文件test1.html,从中输入以下代码: <script type=…
今天遇到个bug,最后终于知道原因了,js方法入参和全局变量重名,用入参赋值全局变量失败,就是说方法入参不能和全局变量重名. 现在下面的例子也说明,局部变量和全局变量不可以同名不光是入参,只要同名赋值就会失败. <html> <body> <script type="text/javascript"> var test = 5; //全局变量 function a() { var test = 3;//局部变量 test =test; }; func…
之前接触了一些javascript局部变量命名提升的问题但是一直没有总结今天特地好好总结一下 变量提升 一个变量的作用域是程序源代码中定义的这个变量的区域.全局变量拥有全局作用域,在javascript代码中任何地方都有的定义.但是函数中声明的变量只在函数体内有定义,它是局部变量并且函数体内的的局部变量的优先级是高于同名全局变量,所以全局变量会被局部变量顶替. var scope = "global"; //全局变量 function checkScope(){ var scope =…