题目1
/*全局(window)域下的一段代码*/
function a(i) {
var i;
alert(i);
};
a(10);
/*
输出结果是: 10
分析:
a 函数有一个形参 i,调用 a 函数时传入实参 10,形参 i=10
接着定义一个同名的局部变量 i,未赋值
alert 输出 10
*/
题目2
function a(i) {
alert(i);
alert(arguments[0]);
var i = 2;
alert(i);
alert(arguments[0]);
};
a(10);
/*
输出结果: 10,10,2,2
分析:
a 函数有一个形参i,调用 a 函数时传入实参 10,形参 i=10
第一个 alert 把形参 i 的值 10 输出
第二个 alert 把 arguments[0] 输出,应该也是 i
接着定义个局部变量 i 并赋值为2,这时候局部变量 i=2
第三个 alert 就把局部变量 i 的值 2 输出
第四个alert再次把 arguments[0] 输出
*/
题目3
/*全局(window)域下的一段代码*/
var i=10;
function a() {
alert(i);
var i = 2;
alert(i);
};
a();
/*
输出结果: undefined,2
分析: js的预定义功能
*/
题目5
var i=10;
function a() {
alert(i);
function b(){
var i = 2;
alert(i);
}
b();
};
a();
/*
输出结果: 10,2
分析:
i的定义对于a来说,b定义的i是是私有的(比喻),
a在查找变量a时候是一级级向上查找的,不会向下查找
*/
题目6
var scope = "global scope";
function checkscope(){
var scope = "local scope";
function f(){
return scope;
}
return f();
}
checkscope();
function checkscope2(){
var scope = "local scope";
function f(){
return scope;
}
return f;
}
checkscope2()();
/*
输出结果: local scope,local scope
分析:
checkscope(); 局部变量作用于在函数里面都是通用的,
checkscope2()(); f()依旧是绑定checkscope2(),checkscope2一样是存在
*/
题目7
// 数据统计1
var uniqueInteger = (function(){
var counter = 0;
return function(){
return counter++;
}
}());
uniqueInteger();//0
// 数据统计2 通过对象
function counter(){
var n = 0;
return {
count:function(){ return n++},
reset:function(){ n=0;}
};
}
var c = counter();
var d = counter();
c.count();//0
d.count();//0
c.reset();//
c.count();//0
d.count();//1
/*
1.两个方法都可以访问私有变量n
2.每次调用counter()都会创建一个
新的作用域链和一个新的私有变量
*/
题目8
function constfunc(v){
return function(){
return v;
};
}
var funcs = [];
for(var i = 0;i<10;i++){
funcs[i] = constfunc(i);
}
funcs[5]();//值是多少?
function constfunc(){
var funcs = [];
for(var i = 0;i<10;i++){
funcs[i] = function(){return i;};
}
return funcs;
}
var funcs = constfunc();
funcs[5]();// 值是多少?
/*
结果: 5,10
分析: 第一个funcs中的每个function都是new新的constfunc,处于不同的闭包
第二个funcs中的每个function处于同一个闭包中,数据共享,都会返回相同的值
*/
具体可以查看javascript解析过程
http://lingf.iteye.com/blog/1834909
分享到:
相关推荐
在本文中,我们将介绍JavaScript面向对象编程中的经典案例,包括对象、类、继承、原型链和闭包等概念。 一、对象和类 在JavaScript中,对象是指一个实体,可以拥有自己的属性和方法。对象可以使用工厂函数或构造...
JavaScript中的函数是编程的核心部分,它允许我们定义可重复使用的代码块,以便在需要时调用。本教程将深入探讨JS函数的基础知识,通过实际案例帮助理解其工作原理。 一、函数定义 在JavaScript中,我们可以使用`...
### JavaScript中的闭包详解 #### 一、闭包的基本概念 闭包是JavaScript中一个重要的概念,也是理解和掌握高阶编程技巧的关键。根据司徒正美的介绍,闭包的定义可以概括为:“闭包就是在另一个作用域中保存了一份...
1. 变量与数据类型:理解JavaScript中的var、let和const声明变量的方式,以及基本数据类型(Number、String、Boolean、Null、Undefined、Symbol、BigInt)和复合数据类型(Object、Array、Function)。 2. 运算符:...
JavaScript,一种广泛应用于Web开发的轻量级编程语言,是前端开发的核心技术之一。"javascript入门经典源代码" 涵盖了初学者在学习JavaScript过程中可能会遇到的基础概念和实践案例。这个压缩包很可能是第四版...
### JavaScript核心知识点解析 #### 一、JavaScript简介与应用场景 JavaScript是一种广泛使用的脚本语言,主要应用于网页开发中,用于实现动态效果、交互功能以及增强用户体验。它不仅可以用来创建简单的网页特效...
这个压缩包包含45个JavaScript的经典实例,以及一个名为"Javascriptjavascript使用技巧.txt"的文本文件,旨在帮助用户深入理解和掌握这门语言的核心概念及实用技巧。 1. **变量与数据类型**:JavaScript支持动态...
接下来,我们来看一个经典的闭包应用案例,用于解决异步执行中的变量共享问题: ```javascript for (var i = 0; i ; i++) { setTimeout(function () { console.log(i) }, 0) } ``` 这段代码原本期望输出 0 到 3...
本书由 Marijn Haverbeke 编写,通过丰富的游戏式编程案例、清晰的概念讲解以及实践性的代码示例,让读者能够深入理解 JavaScript 的核心概念和技术。 ### 关键知识点解析 #### 1. **On Programming** 在这一部分...
JavaScript,作为一种广泛应用于网页和网络应用的编程语言,是现代前端开发的核心技术之一。对于初学者来说,掌握JavaScript基础知识至关重要,因为它是实现交互式网页、动态内容和客户端数据处理的关键工具。本教程...
JavaScript,作为一门广泛应用于网页和互联网开发的脚本语言,是前端开发的核心技术之一。它由Netscape公司的Brendan Eich在1995年发明,最初被命名为LiveScript,后来为了与Sun Microsystems的Java语言搭上关系,...
JavaScript,简称JS,是Web开发中的核心语言,用于实现客户端的动态效果和交互。下面将详细解析这8个经典JS代码片段,它们涵盖了常见的问题解决策略,有助于提升开发者在实际项目中的技能。 1. **数组去重** 在...
"Kotori Snake"项目不仅是一个简单的JavaScript实践,也是一个良好的起点,引导开发者进一步学习更高级的概念,如闭包、异步编程、模块化、ES6新特性等。通过这个游戏,你可以加深对JavaScript动态特性的理解,并...
标题“99_bottles_of_beer”是一个经典的编程练习,源自一首同名的英文童谣,用于教学循环、条件语句以及字符串操作等基本的编程概念。在本例中,我们将关注使用JavaScript来实现这一练习。 在JavaScript中,我们...
"puissance4" 是一个基于JavaScript开发的游戏项目,可能指的是经典的四子连珠(Connect Four)游戏。在JavaScript中,这款游戏通常使用二维数组来表示棋盘,并通过事件监听来处理玩家的交互。以下是一些相关的...