JS作用域和ASP(vbs)作用域比较】的更多相关文章

一.js作用域,先上图: 以上代码执行的效果是,依次弹出 undefined, undefined, a, a,为什么是这样的结果啦?因为JS的作用域为链式作用域. 作用域链: 用VAR声明一个变量时,就为该变量所在的对象添加了一个属性,由于JS的变量都是对象的属性,而该对象可能又是其它对象的属性,而所有的对象都是WINDOWS属性,所以这些对象的关系可以看作一条链,链头就是变量的所处对象,链尾就是WINDOWS对象. 我们来分析一下上面函数中变量的作用域链.第一个alert输出的str,它的作…
js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String; 特点: 在内存中占据着固定的地方和大小 从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本 引用类型值: 是指那些可能由多个值够成的对象 特点: 引用类型的值是对象,保存在内存堆中 包含引用类型值的变量复制引用类型的值,复制的实际是指针,因此两个变量最终都指向同一个对象 参数传递 所…
function functions(flag) { if (flag) { function getValue() { return 'a'; } } else { function getValue() { return 'b'; } } return getValue(); } console.log(function functions(true)); 请问这段代码会输出什么呢. 答案将永远是:b. 解释一下为什么,因为在js是没有块级作用域的,又因为函数声明提升的原因,上面的这段代码变…
这次说一下对象具体的一个实例:函数,以及其对应的作用域与作用域链.简单的东西大家查下API就行了,这里我更多的是分享自己的理解与技巧.对于作用域和作用域链,相信绝大多数朋友看了我的分享都能基本理解,少数人看完之后再努力思考思考,基本也就懂了.最后说一下,不合理的地方,欢迎批评指正. 函数调用 跳过基本的函数定义,直接说函数调用,js中的函数调用有以下四种方式: 1.直接调用 2.作为对象的方法调用 当作为对象调用时,这里的this指向调用方法的对象,而我们所说的链式调用即是在函数内部作用域的最后…
简介 一个定义在函数内部的函数与包含它的外部函数构成了闭包,内部函数可以访问外部函数的变量,这些变量将一直保存在内存中,直到无法再引用这个内部函数. 例如: var a = 0; function outerFun(i) { var b = i; function innerFun(j) { var c = j; console.log("全局变量:"+a); console.log("外部变量:"+b); console.log("内部变量:"…
本文重点是要梳理执行上下文的生命周期中的建立作用域链,在此之前,先回顾下关于作用域的一些知识. 1.什么是作用域(scope)? 在<JavaScritp高级程序设计>中并没有找到确切的关于作用域的定义,只是在"4.2执行环境及作用域"中简单说了下执行环境(execution context)的概念.而执行环境其实就是之前博客:js基础梳理-究竟什么是执行上下文栈(执行栈),执行上下文(可执行代码)?中的执行上下文. 而在<JavaScript权威指南>中,对作…
概述 函数是js中最常见的作用域单元, 声明在一个函数内部的变量或函数会在所处的作用域中隐藏起来, 这是有意为之的非常好的设计原则. 但是随着js的发展, 我们有了某个代码块(通常指{..}内部)隐藏变量或函数的需求, 这就是块级作用域的由来. 下面是不用es6实现块级作用域的三种方法, 供以后开发时参考, 相信对其他人也有用. IIFE IIFE, 即立即执行函数, 用一个函数作用域(闭包)来模拟块级作用域.示例如下: //es6中的块级作用域 {let a = 1; console.log(…
js的函数作用域跟块级作用域(原文地址:http://blog.csdn.net/huangjq36sysu/article/details/51085674)…
var i = 2,    x = 5;var fn = function (x) {    x += 3;    return function (y) {        console.log((x++) + y + (--i));    }};var f = fn(1);f(2);fn(3)(4);f(5); 答案:f(2) => 7;     fn(3)(4) => 10;    f(5) =>9; 解题思路: 1. var f = fn(1);相当于开了一个堆内存(私有作用域)…
函数的上级作用域,他的上级作用域就是谁,跟函数在哪执行的没什么关系. <script> //如何查找上级作用域? //看函数在哪个作用域下定义的,他的上级作用域就是谁. 跟函数在哪执行的没什么关系. var num = 12; function fn() { var num = 120; return function () { console.log(num); ///上级作用域和在哪定义的有关系 } } var f = fn(); f(); ///上级作用域和在哪里执行的没啥关系 ~fun…