`
lib
  • 浏览: 135983 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

JavaScript的作用域(学习笔记一)

阅读更多

 

<script>
        var test1 = 'Just a test!'; 
	function test1(x){ 
		return x*x; 
	};
	alert(test1);  
	alert(test1(3));

	var test2 = 'Just another test!'; 
	var test2 = function(x){ 
		return x*x; 
	};
	alert(test2(5)); 
	alert(test2);
</script>

 

 先看一下上面这段代码,4个alert分别会打印出什么?

 下面给出答案:

 

  1.  alert(test1)打印出“Just a test!”
  2.  alert(test1(3))无法正确执行,直接报js脚本错误:缺少函数
  3.  alert(test2(5))打印出:“25”
  4.  alert(test2)打印出:function(x){return x*x;}
1、首先分析一下test1。众所周知,JavaScript的执行不是从上到下顺序执行的,而是先找到定义变量的语句首先执行,当把所有的定义语句都执行完之后,在按照顺序执行剩余的语句。所以,对于test1来说,虽然代码片段(1)
function test1(x){ 
	return x*x; 
};
 在代码片段(2)
var test1 = 'Just a test!'; 
 之后书写,但是,js在编译的时候,代码片段(1)是定义语句,则首先执行,然后,执行代码片段(2)。由于代码片段(2)的变量名称与代码片段(1)的变量名称相同,对test1进行的覆盖,test1就由第一次定义的函数变成了一个字符串。所以,打印的结果就是上面给出的前两个答案;

2、再来分析一下test2。按照刚才讲解的JavaScript的执行顺序,应该能够很清楚的知道打印出的结果了。但是,有人又提出了一个问题,看下面的代码片段
//方式一
function test2(x){
        return x*x; 
}

//方式二
var test2 = function(x){ 
	return x*x; 
};
 

方式一和方式二有什么区别吗?不都是定义了一个叫test2的函数吗?单就这方面来看,确实没有什么区别,但是,方式一是“定义式”的,方式二是“赋值式”的,放到整个上下文中,就会对执行的顺序产生影响。所以,这个细节一定要注意啊!

分享到:
评论

相关推荐

    javascript入门学习笔记

    理解闭包和作用域对于掌握JavaScript的高级特性至关重要。 三、DOM操作 在Web开发中,JavaScript常用于操作文档对象模型(DOM),通过DOM可以改变HTML元素的样式、内容或位置。熟悉DOM API,如getElementById、...

    JavaScript-学习笔记.pdf

    以上是JavaScript学习笔记中提到的一些核心知识点,通过对这些知识点的理解和熟练应用,可以为进一步学习和掌握JavaScript打下坚实的基础。在实际开发过程中,结合具体的项目需求,这些知识会得到更深入的拓展和应用...

    JavaScript 入门 新手学习笔记

    这篇"JavaScript入门新手学习笔记"提供了全面的学习资源,适合初学者系统性地掌握这一技术。 笔记可能包含了以下关键知识点: 1. **基础语法**:JS的基础包括变量(var、let、const)、数据类型(如字符串、数字、...

    js 笔记 javascript 学习笔记

    本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...

    JavaScript练习程序学习笔记.rar

    这份“JavaScript练习程序学习笔记”很可能包含了一系列的代码示例、学习心得和常见问题解答,旨在帮助学习者深入理解和掌握JavaScript编程。 在JavaScript的学习过程中,首先会接触到基础语法,包括变量声明(var...

    javascript学习笔记整理知识点整理

    这份“javascript学习笔记整理知识点整理”是针对初学者的一份宝贵资料,涵盖了JavaScript的基础知识,旨在帮助新手快速入门并掌握这门语言的核心概念。 一、变量与数据类型 在JavaScript中,变量用于存储数据。...

    JavaScript学习笔记

    JavaScript是一种广泛应用于网页和网络应用的脚本语言,它在浏览器端...通过阅读"JavaScript从入门到精通学习笔记.docx"文档和解压"Chapter2.rar",你将深入探索以上各个知识点,逐步成为一名熟练的JavaScript开发者。

    javascript学习资料 + 笔记

    接着,深入学习JavaScript的对象和作用域。对象是JavaScript的核心特性,用于存储和组织数据,可以创建包含属性和方法的对象。作用域决定了变量在何处可以被访问,包括全局作用域、局部作用域以及ES6引入的块级作用...

    javascript学习笔记发放2

    在这篇学习笔记中,我们将深入探讨JavaScript中的数据操作和函数作用域。 首先,我们要明白JavaScript中的数据类型分为基本数据类型(如Number、String、Boolean、Null、Undefined和Symbol)和对象数据类型(如...

    JavaScript-学习笔记.docx

    这篇学习笔记主要涉及了JavaScript的基础概念和一些高级特性,包括预编译、作用域、函数、对象原型、原型链、函数调用方式(如call、apply)、继承模式、对象克隆、数组操作、自定义类型判断以及错误处理机制。...

    JavaScript高级程序设计2,学习笔记---第一篇

    这篇学习笔记将带你探索JavaScript的核心概念,包括变量、数据类型、控制流、函数、对象和类等,这些都是构建复杂应用程序的基础。 首先,我们要了解JavaScript的基础语法。在JavaScript中,变量是存储数据的容器,...

    javascript高级编程(学习笔记 包括 1 , 2 版)

    JavaScript 高级编程的学习笔记涵盖了ECMAScript中的基础概念,特别是关于变量、数据类型和运算符的使用。在ECMAScript中,变量可以存储两种基本类型的值:原始值(Primitive Values)和引用值(Reference Values)...

    JavaScript基础教程笔记

    - **闭包**:当一个内层函数访问其外层函数的变量时形成的特殊作用域结构。 #### 四、DOM操作 - **获取元素**: - `document.getElementById()`:通过ID获取元素。 - `document.getElementsByClassName()`:通过...

    Javascript学习笔记

    #### 三、JavaScript作用域篇 作用域决定了变量的可见性和生命周期,JavaScript的作用域分为全局作用域和局部作用域。 ##### **1. 全局环境** 在浏览器环境中,全局作用域通常指的就是`window`对象。所有未被显式...

    Javascript学习笔记(传智播客视频学习笔记+代码)

    "Javascript学习笔记(传智播客视频学习笔记+代码)"是一份全面介绍JavaScript基础知识的学习资源,适用于初学者。这份笔记结合了传智播客的web前端培训视频内容,提供了丰富的理论讲解和实践代码,帮助读者从零开始...

    javascript面向对象学习笔记

    为了解决重复创建方法的问题,可以将方法移出构造函数,放到全局作用域,如`sayName`函数。这样虽然避免了重复创建,但全局函数失去了通用性,只能由对象调用,且不适用于有多个方法的情况。 接下来是原型模式,这...

    javascript权威指南 学习笔记之变量作用域分享

    在《JavaScript权威指南》第五版中,对变量作用域进行了深入的介绍,通过对作者的学习笔记梳理,我们可以系统地了解变量作用域相关的知识点。 首先,我们需要明确变量作用域的两个基本类型:全局作用域和局部作用域...

Global site tag (gtag.js) - Google Analytics