还是先上一段代码,思考一下执行的结果。
<script>
var str = 'outer';
function test1(){
alert(str);
};
function test2(){
alert(str);
var str = 'inner';
};
function test3(){
var str = 'inner';
alert(str);
};
function test4(){
alert(strInfo);
};
test1();
test2();
test3();
test4();
</script>
有了前面关于作用域的相关知识,这里的问题应该很容易回答了。
分别打印出:
- outer
- undefined
- inner
- js脚本错误:strInfo未定义。
test1很简单,使用了全局变量str,所以,肯定打印出全局变量对应的值:outer。
test3很简单,函数中重新定义了str,所以打印出局部变量对应的值:inner。
test4很简单,从来没有定义过strInfo,直接引用的话,会报js脚本错误。
重点说一下test2。很多人认为,test2按道理,就比test1多了一行,应该打印出outer,然后,对str重新赋值。如果你也这样想,就错了。说明,对变量的作用域还不是很了解。
上面的代码,一共是4个作用域:全局作用域、test1的作用域、test2的作用域和test3的作用域。test2中的代码其实是下面这样的
function test2(){
var str;
alert(str);
str = 'inner';
};
这样一看,大家应该明白了吧。在定义test2的时候,编译器会查找在这个作用域中是否有var关键字,如果有,则在作用域的最顶端事先声明;如果没有,就会到test2的上一层作用域中进行查找,如果找到了,就显示相应的数值(这其实就是test1的情况),如果没有就再向上一层找,知道全局作用域。如果全局作用域也没有,就会报脚本错误(这其实就是test4的情况)。
分享到:
相关推荐
理解闭包和作用域对于掌握JavaScript的高级特性至关重要。 三、DOM操作 在Web开发中,JavaScript常用于操作文档对象模型(DOM),通过DOM可以改变HTML元素的样式、内容或位置。熟悉DOM API,如getElementById、...
以上是JavaScript学习笔记中提到的一些核心知识点,通过对这些知识点的理解和熟练应用,可以为进一步学习和掌握JavaScript打下坚实的基础。在实际开发过程中,结合具体的项目需求,这些知识会得到更深入的拓展和应用...
这篇"JavaScript入门新手学习笔记"提供了全面的学习资源,适合初学者系统性地掌握这一技术。 笔记可能包含了以下关键知识点: 1. **基础语法**:JS的基础包括变量(var、let、const)、数据类型(如字符串、数字、...
此外,还需了解函数表达式(匿名函数、箭头函数)和作用域(全局作用域、局部作用域、闭包)的概念。 在JavaScript中,对象是核心概念之一。它们由键值对组成,可以用来表示复杂的数据结构。原型和原型链是...
本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...
这份“javascript学习笔记整理知识点整理”是针对初学者的一份宝贵资料,涵盖了JavaScript的基础知识,旨在帮助新手快速入门并掌握这门语言的核心概念。 一、变量与数据类型 在JavaScript中,变量用于存储数据。...
本学习笔记旨在帮助初学者快速掌握JavaScript的核心概念和技术,实现从入门到精通的过渡。 1. **基础语法** - 变量声明:JavaScript支持var、let和const关键字声明变量,理解它们的作用域和提升特性至关重要。 - ...
接着,深入学习JavaScript的对象和作用域。对象是JavaScript的核心特性,用于存储和组织数据,可以创建包含属性和方法的对象。作用域决定了变量在何处可以被访问,包括全局作用域、局部作用域以及ES6引入的块级作用...
在这篇学习笔记中,我们将深入探讨JavaScript中的数据操作和函数作用域。 首先,我们要明白JavaScript中的数据类型分为基本数据类型(如Number、String、Boolean、Null、Undefined和Symbol)和对象数据类型(如...
"Javascript学习笔记(传智播客视频学习笔记+代码)"是一份全面介绍JavaScript基础知识的学习资源,适用于初学者。这份笔记结合了传智播客的web前端培训视频内容,提供了丰富的理论讲解和实践代码,帮助读者从零开始...
这篇学习笔记主要涉及了JavaScript的基础概念和一些高级特性,包括预编译、作用域、函数、对象原型、原型链、函数调用方式(如call、apply)、继承模式、对象克隆、数组操作、自定义类型判断以及错误处理机制。...
JavaScript 高级编程的学习笔记涵盖了ECMAScript中的基础概念,特别是关于变量、数据类型和运算符的使用。在ECMAScript中,变量可以存储两种基本类型的值:原始值(Primitive Values)和引用值(Reference Values)...
#### 三、函数与作用域 - **函数定义**: - 函数声明:`function myFunction() { /* code */ }` - 函数表达式:`const myFunction = function() { /* code */ };` - 箭头函数:`const myFunction = () => { /* ...
#### 三、JavaScript作用域篇 作用域决定了变量的可见性和生命周期,JavaScript的作用域分为全局作用域和局部作用域。 ##### **1. 全局环境** 在浏览器环境中,全局作用域通常指的就是`window`对象。所有未被显式...
个人在学习前端JavaScript时的学习笔记,内含JavaScript的中基础知识点,以及案例。里面有兼容市面上浏览器的方法 1.知识点包括:基础语法,字符串操作,object对象,DOM对象,BOM对象,offset,client,scroll对象...
为了解决重复创建方法的问题,可以将方法移出构造函数,放到全局作用域,如`sayName`函数。这样虽然避免了重复创建,但全局函数失去了通用性,只能由对象调用,且不适用于有多个方法的情况。 接下来是原型模式,这...
在《JavaScript权威指南》第五版中,对变量作用域进行了深入的介绍,通过对作者的学习笔记梳理,我们可以系统地了解变量作用域相关的知识点。 首先,我们需要明确变量作用域的两个基本类型:全局作用域和局部作用域...