先上两段代码。这两段代码均运行于html5的环境中。
代码一
<script> var yourname="ITeYe"; myname="zhujiaojiao"; changeName(); function changeName(){ alert(yourname); //A alert(myname); //B } </script>
代码二:
<script> var yourname="ITeYe"; myname="zhujiaojiao"; changeName(); function changeName(){ alert(yourname); //C alert(myname); //D var yourname="beijibingshan"; myname="Fanny"; } alert(yourname); //E alert(myname); //F </script>
其中A,B,C,D,E,F分别输出的结果是“ITeYe”,“zhujiaojiao”,“undefined”,“zhujiaojiao”,“ITeYe”,“Fanny”。
试问问题一:为什么A处和C处输出的结果不一样?
试问问题二:为什么E处输出结果还是最初的值,而F处输出的却不是?
可以总结出这样的观点:
原来,“var”定义的是作用域上的一个变量,而没有'var'的标识符却可能是全局跟对象的一个属性,当代码运行在全局作用域的时候,作用域就是跟对象window,所有,有没有“var”都无所谓。当然,不同的javascript执行引擎可能有不同的实现方式,但都可以大致这么来理解。
相关推荐
在JavaScript中,执行环境的概念至关重要,因为它不仅涉及到变量的作用域,还关系到内存管理以及代码执行的流程。 每个执行环境都与一个变量对象相联系,该对象存储了环境中定义的所有变量和函数。虽然开发者无法...
JavaScript 课程内容总结 JavaScript 是一种广泛应用于网页开发的编程语言,...JavaScript 中的作用域包括全局变量和局部变量。全局变量定义在函数外部,作用于整个脚本。局部变量定义在函数内部,只能在函数中使用。
这篇博客“JavaScript 面向对象编程小结”可能涵盖了JavaScript中实现OOP的一些核心概念和技巧。 首先,面向对象编程的基础是类与对象。在JavaScript中,虽然没有像Java或C++那样的传统类机制,但是可以通过构造...
在JavaScript中,每次在局部作用域内查找变量时,都需要沿着作用域链向上查找,直到找到变量所在的定义位置。如果频繁使用全局变量,这会导致大量的查找操作,降低执行效率。为优化这一点,可以将全局变量导入到局部...
2. 作用域:JavaScript中的变量作用域有全局作用域和局部作用域,以及ES6引入的块级作用域。理解作用域规则能避免很多潜在问题。 3. 函数:函数是可重用的代码块,可以有参数和返回值。了解函数表达式、函数声明、...
局部变量只在当前作用域内有效,销毁后不会占用内存,而全局变量在整个脚本生命周期中都存在。 5. **避免在性能关键的函数中使用`for-in`循环**: `for-in`循环用来遍历对象的所有可枚举属性,但不如传统的`for`...
如果在函数内部声明一个同名的全局变量,那么在该函数内部,这个变量会覆盖全局的同名变量。 另外,JavaScript还引入了块级作用域的概念,这是通过let和const关键字实现的。在ES6之前,只有函数能创建新的作用域,...
- 闭包:能够访问自身作用域、外部作用域以及全局作用域的函数。 - `arguments`对象:在函数内部,可以访问所有传入参数的集合。 7. **对象** - 基于原型的对象创建:通过`new`关键字和构造函数创建。 - 对象...
作用域是指在JavaScript中变量、函数和对象的可见性范围。主要有全局作用域和局部作用域。全局作用域的变量在整个脚本中都可访问,而局部作用域的变量仅在其定义的函数内部可见。 2. 闭包的概念 闭包是一种特殊的...
3.10 变量作用域56 第4章 表达式和运算符60 4.1 原始表达式60 4.2 对象和数组的初始化表达式61 4.3 函数定义表达式62 4.4 属性访问表达式63 4.5 调用表达式64 4.6 对象创建表达式64 4.7 运算符...
JavaScript是一种弱类型的...在实际编程中,应始终推荐使用`let`和`const`代替`var`来声明变量,以限制变量的作用域,并避免不必要的变量提升。此外,使用严格相等`===`进行比较操作,可以减少类型转换带来的不确定性。
首先,逗号运算符(`,`)在JavaScript中是一种特殊的运算符,它用于分隔多个表达式并返回最后一个表达式的结果。例如,`let oo = (1, 2, 3)`将返回3,因为3是最后的表达式。在`for`循环中,逗号运算符也常用于同时初始...
第4章 变量、作用域与内存 83 4.1 原始值与引用值 83 4.2 执行上下文与作用域 87 4.3 垃圾回收 94 4.4 小结 101 第5章 基本引用类型 103 5.1 Date 103 5.2 RegExp 107 5.3 原始值包装类型 113 5.4 单例...
JavaScript是一种基于原型的动态脚本语言,广泛应用于网页开发中。它具有强大的类型系统,包括原始类型和对象类型。...掌握这些概念对于任何一个希望在Web开发领域深入学习JavaScript的开发者而言都是必不可少的。
立即执行函数表达式是一种创建私有作用域并立即运行的函数。它通常用括号包裹函数定义,然后紧接着另一个括号传递参数。例如: ```javascript (function fun(a, b, c) { // ... })(1, 2, 3); ``` 这里的第一...