var myname="xiaofei"; function test(){ alert(myname); var myname="xiaonou"; alert(myname); } test(); //执行弹出的第一次是undefined,第二次是xiaonou 脚本函数在执行test之前必须执行创建活动对象这一步,而在创建活动对象的时候 其构造是{name:undefined,myname:xiaonou};所以执行的时候自然就是上面的这个结果啦。 javascript权威指南中有句话和好的解释啦这个现象---函数总是在定义它的作用域执行的,而不是在执行它的作用域里运行。
var obj = { i : "test", m : function(){ alert(this.i);//指向obj对象 ,值test function B(){ var i = 1; alert(this.i);//指向window对象,值undefined } B();//B并不是window的方法,this为什么也指向window?????? } } obj.m(); 弹出来的依次是test和undefined; 为什么呢? 我们知道函数是有4种调用模式 1:函数调用模式:也是最简单的模式 比如说:functioninvoke()--对于普通的函数调用, 函数的返回值成为调用表达式的值; 2:方法调用模式:函数依附于某个对象,函数中的this默认指向所属对象 3:构造调用模式:函数作为构造器来使用,new 关键字 4:apply/call调用模式:可以动态改变函数中this的指向 函数内部的this默认指向全局对象window除非手工指定this. 所以经过上面的分析我们可以看到B()这个函数,没有依附于某个对象,所以他的this是指向window的。 B();我们如果改成 this.B();会出现 TypeError: Object #<Object> has no method 'B'
相关推荐
2. 兼容性:Rhino对ECMAScript 3的全面支持保证了与主流浏览器的兼容性,同时,1.7.2版本还引入了如函数表达式、块级作用域等ES4特性,提供了更丰富的编程语法。 3. Java集成:Rhino可以直接调用Java类库,反之亦然...
作用域链是JavaScript中另一个核心概念,它是由函数创建时的作用域决定的,包含了函数被创建时所有可访问的数据对象。这个链由内部属性[[Scope]]定义,它包含了函数定义时所在作用域的对象集合。当函数执行时,会...
本章示例代码将深入探讨对象作用域的概念,帮助开发者更好地理解和运用这一核心原则。 对象的作用域决定了一个对象在何处可以被访问,以及它何时被创建和销毁。在大多数编程语言中,对象的作用域主要有以下几种类型...
本文将详细解析AngularJS中的作用域与数据绑定机制,包括作用域的创建、作用域的继承以及数据绑定的方式。 作用域(Scope)是AngularJS中的核心概念,它类似于其他编程语言中的作用域,但与页面的DOM结构紧密相关。...
作用域链是一个对象列表,用于存储变量和函数声明。 - 当JavaScript引擎需要查找变量时,它会从当前作用域开始,沿着作用域链向上查找,直到找到相应的变量为止。 - 如果在当前作用域找不到变量,则继续在上一层...
2. **变量活性**:在作用域内声明的变量会自动成为该作用域的活动对象的一部分。这意味着这些变量在作用域内部是可以被访问的。 3. **解析时机**:作用域内的变量和函数只有在作用域执行期间才会被解析和求值。这...
- **JS Variables**:变量的定义与使用,讲解不同类型的变量及作用域的概念。 - **JS Operators**:算术、比较、逻辑等运算符的使用,帮助开发者理解表达式的计算规则。 - **JS Comparisons**:比较操作符的使用,如...
2. **作用域创建**:在解析过程中,浏览器会创建作用域链,确定变量的可见性和生命周期。 3. **执行上下文**:JavaScript代码在特定的执行上下文中运行,分为全局执行上下文和函数执行上下文。 4. **内存管理**:...
此外,还将涵盖闭包、作用域、原型链等高级特性,这些是JavaScript中的精髓,也是面试和实际工作中常考的知识点。 函数式编程也是本课程的重要组成部分,学员会接触到高阶函数、柯里化、map、reduce等函数式编程...
- 掌握变量的作用域链以及词法作用域的特点。 4. **错误处理与调试:** - 学会使用try-catch-finally语句处理异常。 - 掌握常用的调试技巧,包括使用console.log()和浏览器开发者工具。 5. **异步编程:** - ...
预解析&作用域1 预解析是 JavaScript 中的一个重要概念...预解析和作用域是 JavaScript 中两个非常重要的概念,它们对我们的编程有着重要的影响。如果我们不能正确地理解和使用它们,那么可能会导致程序中的许多问题。
- 闭包是指函数可以访问其自身作用域、外部作用域,甚至已经关闭的变量,这是JavaScript中实现模块化和封装的重要机制。 4. **原型与继承**: - JavaScript使用原型链实现对象的继承,每个对象都有一个`__proto__...
JavaScript作用域是编程中至关重要的概念,它定义了变量、函数和对象的可见性和生命周期。在深入理解JavaScript作用域时,我们需要关注以下几个关键知识点: 1. **全局作用域**:这是程序中默认的作用域,任何在...
笔记可能详细解析了原型链、闭包、作用域等概念。 3. **DOM操作**:文档对象模型(DOM)是JavaScript操作HTML和XML文档的标准接口。学习者将了解到如何通过JavaScript选择、添加、修改和删除DOM元素,以及事件处理...
本章节将深入探讨JavaScript中的内置对象、面向对象编程基础、基本包装类型以及变量、作用域和内存管理。 首先,我们来看内置对象。JavaScript的内置对象包括Global对象、Math对象等。Global对象在ECMAScript中是一...
这个活动对象与当前作用域链的顶部连接,形成了作用域链。作用域链允许函数访问其自身作用域内的变量,以及包含它的所有外部作用域的变量,直到全局作用域。 JavaScript引擎在解析代码时,会先进行预解析阶段,将...
当代码执行遇到变量时,JavaScript引擎会通过作用域链来进行标识符解析,从作用域链的头部即活动对象开始搜索变量名,并且按照定义函数时的顺序将变量、命名参数、参数集合以及this推入作用域链的前端。 在...
JavaScript是Web开发中不可或...总的来说,理解JavaScript的作用域、变量提升、表达式优先级、预解析以及`this`的指向,是成为一名熟练的JavaScript开发者的基础。通过学习和实践,你可以编写出更高效、更可靠的代码。