jQuery(function($)作用域内的变量和函数名是否具有块级唯一性?
问题解答
你给出的代码中,myfunction和myVariable不会被外部或其他内联脚本覆盖,二者确实仅对这个回调代码块唯一。
核心原理
jQuery(function($) { ... })本质是传入了一个匿名函数作为DOM就绪后的执行回调,JavaScript的函数会创建独立的局部作用域:- 函数内部用
function关键字声明的函数、用var关键字声明的变量,默认都属于当前函数的局部作用域,不会挂载到全局window对象上 - 外部脚本仅能访问、修改全局作用域下的标识符,根本无法触及这个回调内部的局部变量,自然不存在覆盖的可能
- 函数内部用
- 即使其他脚本中也定义了同名的
myfunction或myVariable,只要是在其他作用域下声明的,和当前代码块内的标识符都是完全独立的实体,不会互相干扰。
例外情况
只有你主动将局部变量挂载到全局对象时才会有被覆盖的风险,比如你在代码中添加了window.myVariable = myVariable这类操作,才会将变量暴露到全局作用域,你的现有代码没有这类逻辑,不存在这个问题。
你提问中涉及的完整代码参考:
<script> jQuery( function( $ ) { function myfunction() { console.log( 'test1' ); } myfunction(); var myVariable = 'test2'; }); </script>
内容的提问来源于stack exchange,提问作者bigdaveygeorge
相关产品推荐
相关产品推荐

