很多JS的初学者都对作用域没有很好的理解,会有一些理解偏差,甚至是错误,比如下面就是笔者错过的一道题:
var x = 5; function a(x){ if(x > 0){ x++; } console.log(x); } a(1); console.log(x);
在上面程序中第二个console.log(x)的输出结果是?
a:2 b:3 c:5 d:6
你的选择是什么呢?笔者曾经傻傻的选择了d,习惯了C/C++语言,想当然的认为变量x=5>0,x++结果是
6,这充分表现出笔者当时对JS中函数还有作用域的理解错误;正确答案是c,我们来分析一下:
在最上面的x=5处于顶层作用域,它的作用域是最大的,函数a()在没有调用时是没有输出结果的,这时的
console.log只是摆设,只有在下面a(1)调用a()参数x取1后console.log()才输出结果2,然而最后一行的console.log()输出的结果是5,这就是作用域的原因了,在函数中x=5由于x的重名被子作用域覆盖在函数a()未被调用时没有被赋值,应该是预定义的undefined,而不是5,但函数中x的作用域只在函数中,并没有改变
父作用域中变量x,故输出结果依然是5。
还有一个问题笔者曾经疑惑过,如下:
for(var i=0;i<20;i++) { if(i%2==0) { i++; } } console.log(i);
循环体条件判断if内的i++会影响上面更新表达式中的i++吗?通过测试输出结果证明不会影响,由于循环体
实际上是需要执行的独立代码块,而for()中的初始化表达式,条件表达式和更新表达式是循环条件,不会受
循环体中变量影响。
相关推荐
使用本教程可以帮助学习者快速掌握JavaScript的核心知识点,提高JavaScript编程能力。此外,本教程还提供了配套的代码和实例,方便学习者进行实践和巩固。如果你想要系统学习JavaScript,这个教程是你不可错过的资源...
《JavaScript语言精粹》作为一本经典的编程书籍,深入浅出地介绍了JavaScript这门语言的核心概念和技术要点,是每一个前端开发者乃至后端工程师都不容错过的读物。这本书由Douglas Crockford所著,他不仅是...
下面我们将深入探讨JavaScript中的弹出窗口及其相关知识点。 1. **JavaScript弹出窗口** JavaScript提供了三种基本的弹出窗口方法: - `alert()`: 显示带有确定按钮的消息框,用户点击确定后关闭。 - `prompt()`...
例如,通过`setInterval`设置一个定时器,不断切换标题内容,但这种方法有一个明显的缺陷,即当浏览器窗口失去焦点时,用户无法看到标题的变化,从而错过新消息的提示。 HTML5 Web Notification则提供了更直观、...
在JavaScript的学习过程中,你将接触到以下几个核心知识点: 1. **基础语法**:包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔、null、undefined)、操作符(算术、比较、逻辑)、流程控制...
在进行"JavaScript30天挑战"时,你将学到的关键知识点包括: 1. **基础语法**:变量、数据类型、条件语句、循环、函数等。 2. **DOM操作**:选择元素、添加删除元素、修改属性和内容。 3. **事件处理**:事件监听、...
以下是每一章可能涵盖的关键知识点: 第一章:JavaScript概述 - JavaScript的历史和发展 - JavaScript与Java的关系 - JavaScript的主要应用领域 - 浏览器支持与JavaScript引擎 - JavaScript代码的编写位置(HTML...
这篇总结涵盖了以下几个核心知识点: 1. **变量与数据类型**:JavaScript是弱类型语言,这意味着变量在声明时无需指定类型。它有七种原始数据类型(Undefined、Null、Boolean、Number、BigInt、String、Symbol)...
以上只是《JavaScript 权威指南第四版(四)》中部分关键知识点的简述,完整书籍将更深入地探讨这些概念,并涵盖函数表达式、闭包、模块化、错误处理、正则表达式、JSON、BOM(浏览器对象模型)等更多内容,对于想要...
通过这个项目,我们可以学习到JavaScript中的基础语法、DOM操作、事件处理、定时器运用等多个关键知识点。 1. **基础语法与变量定义**:JavaScript是基于ECMAScript标准的脚本语言,其语法简洁明了。在游戏开发中,...
项目:JavaScript 中的 Flyswatter 游戏及其源代码 Flyswatter 游戏是一个使用 HTML、CSS 和 JavaScript 开发的简单项目。这是一个简单有趣的游戏小项目。用户必须杀死屏幕上弹出的随机苍蝇,并且不能错过任何苍蝇。...
以下是对标题和描述中涉及的知识点的详细说明: 1. **动态添加Option** 在JavaScript中,有两种方式可以向Select添加Option。一种是针对Internet Explorer浏览器的`Add()`方法,如`selTarget.Add(new Option("text...
"一个不容错过的网站建设项目实例"这个标题揭示了我们即将探讨的是一个具有代表性的网站开发案例,特别适合那些希望学习或提升网站构建技能的人。它可能包含了丰富的实践经验,展示了如何将理论知识转化为实际操作。...
打地鼠游戏是一款经典的休闲娱乐游戏,通过JavaScript实现可以让我们深入了解网页动态效果的制作和事件处理。在这个游戏中,玩家需要在地鼠头从洞口冒出后尽快点击它们,以获得分数,而错过则会扣分。以下是游戏开发...
在阅读过程中,利用书签功能可以帮助你快速定位到学习过的章节或重要的知识点,方便复习和查阅。同时,结合实际动手练习是巩固知识的最佳方式,尝试自己编写简单的网页,然后逐渐增加复杂度,这样可以更好地理解并...
下面将详细解释这款游戏源码中的关键知识点。 1. **JavaScript基础** - 变量声明:在游戏中,会用到`var`, `let`或`const`来声明变量,存储游戏状态、得分等信息。 - 数据类型:可能包括数字(Number)用于计分,...
下面我们将深入探讨jQuery在购物车页面中的应用及其相关知识点。 首先,购物车页面是电商网站的核心组成部分,用户可以将心仪的商品添加到购物车,并进行数量调整、删除等操作。在jQuery的帮助下,我们可以实现以下...
本书主要涵盖了以下核心知识点: 1. **基础语法**:包括变量、数据类型(如字符串、数字、布尔值、对象、数组等)、操作符、流程控制(条件语句、循环)、函数定义与调用,以及作用域和闭包等基础概念。 2. **对象...
以下是关于"javascript实现从子页与父页传递参数"的详细知识点: 1. **全局变量**:这是最基础的方法,可以在子页面中定义一个全局变量,然后在父页面中访问该变量来获取数据。但这种方法不推荐,因为全局变量可能...