javascript变量、作用域、命名空间

本文深入探讨JavaScript中全局变量与局部变量的区别,以及如何利用命名空间解决变量冲突问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

javascript变量主要分为两类:

I.   全局变量

II.  局部变量(函数内的变量)


I.   全局变量: 定义在方法体外地所有变量都是全局变量, 还有即使在方法体内使用的变量, 但是未用var关键字声明的也都是全局变量。

ll.  局部变量: 定义在方法体内的、 使用var关键字声明的变量。 (即使跟全局变量名一样, 他也会覆盖全局变量。)



注:

 全局变量就是在当前页面起作用, 一个页面当中的iframe也不管用, 只在一个页面当中有效。

 如果JS代码很多的时候, 我们都要引用JS脚本文件, 但是有可能出现两个脚本当中的全局变量名是一样的, 这会出现错误。 因为面对这些问题JS不会报错, 所以我们需要使用命名空间来解决这些冲突。

javascript命名空间:

      random.js

	// 通过 ID 获取 Element 对象
	function $(id) {
		return document.getElementById(id);
	}
 
	// 显示对应 ID 的对象的节点类型名字
	function myMethod(id) {
		alert($(id).nodeName);
	}
 
	// 这是对外的接口
	window['myNamespace']= {}
	window['myNamespace']['$'] = $;

上面这段代码有两个方法, 红色的部分就是所谓的命名空间,为上面说是所谓的命名空间? 因为不是上面新的一种机制或者技术。 如果仔细观察会发现

window['myNamespace'] = {}

其实就是一个定义对象的语法, 我们在window对象里添加了一个属性(属性名:myNamespace), 这个属性就是一个对象。 第二行代码

window['myNamespace']['$'] = $;

window['myNamespace']就是一个对象, 我们要给这个对象再添加一个属性['$'], 这个属性就是方法$, 所以我们引入random.js文件之后, 在页面想要使用random.js中的$()方法的时候, 使用window.myNamespace.$就可以了。 也可以直接用myNamespace.$, 省略了window。


当然还有很多实现命名空间的办法, 还可以直接用一个对象包住(把所有的方法都定义在对象之内), 这样在外界如果不通过对象名.方法名, 这种格式的话就无法访问里面的方法, 体现了面向对象的封装性。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值