JavaScript中不同函数可以定义相同变量名吗?可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
JavaScript中不同的函数中可以定义相同的变量名,因为是在函数体内部定义的,属于局部变量,外界是访问不到的。所以是可以的。
举例:
var a = 1;
function b(){a = 10;
return;function a(){
console.log(a);}
}b();
console.log(a);
这题打印出a的值为多少呢?可能会有很多的同学认为打印出的值为10,但其实并不是,为什么呢?
误区1:变量提升
我想大家都明白,在执行函数b的时候,由于其内部有一句a=10,前面并没有var,所以在执行完函数b之后,认为变量a提升为全局变量,并且10这个值覆盖了之前的1。所以打印出的值为10。我想的话这是多数新手的思路。
这里有个知识点:
显示声明:var a = 1;
隐式声明:a = 1;
隐式声明会变量提升为全局变量
误区2:不知道函数声明也是有提升的
多数新手认为在执行函数b的时候,js执行代码自上往下,执行到return的时候退出函数,不再执行函数a,所以认为这个函数a根本不起作用。
拓展知识:
全局变量和局部变量的区别如下:
1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
2. 内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区
3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了
4. 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量。
局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。
全局变量是编程术语中的一种,源自于变量之分。
变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。
全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。
看完上述内容,你们对JavaScript中不同函数可以定义相同变量名有进一步的了解吗?如果还想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。