javascript-JS如何延长作用域链?

问题描述

JS如何延长作用域链?

1、JS的with语句如何延长作用链?如下一段代码:

function buildURI(){
            var qs = '?debug = true';

            with(location){
                var url = href + qs;
            }

            return url;
        }
        alert(buildURI());

url如何会在with语句外面就能被调用?它不是location对象的属性吗?href是否跟url一样,也可以被外面的访问?

2、try-catch语句呢?

3、还有没有其他延长作用域链的方法?

解决方案

url是你定义的变量,也不是location的属性。with语句块是没有作用域的,所以url在buildURI中都可以访问,除非你用的es6的let定义,而不是var定义

2同理

不懂你的延长作用域链是什么问题。。应该是你没搞清楚var申明的变量作用域

解决方案二:

with不被建议采用,js只有块级变量的概念,延长作用域可以有很多方法,比如使用闭包

解决方案三:

js的作用域链理解
javascript延长作用域链
JS - 关于改变Javascript的作用域链

时间: 2024-11-08 20:26:43

javascript-JS如何延长作用域链?的相关文章

JS函数的作用域链的一点问题

问题描述 JS函数的作用域链的一点问题 1.能否细说一下,函数创建.执行时,执行环境.作用域链.活动对象.局部变量的具体执行过程? 2.另外,作用域链是针对谁的概念,是针对执行环境,还是变量对象?作用域链中包含什么? 3.执行函数时,是先复制函数的作用域链,根据其内容确定作用域的范围,再创建局部执行环境,还是先创建一个局部环境,再复制函数的作用域链,构建执行环境的作用域链? 解决方案 js的作用域链理解js的变量作用域 ,函数名,变量名覆盖问题

初探JavaScript——JS另类的作用域和声明提前

最近恰逢毕业季,千千万万的学生党开始步入社会,告别象牙塔似的学校生活.往往在人生的各个拐点的时候,情感丰富,感触颇深,各种对过去的美好的总 结,对未来的展望.与此同时,也让诸多的老"园"工看完这些小年轻的文章后感触良多,不禁也要写上几笔,所以就出来了很多类似"毕业两年小记"."毕业五 年有感"-- 可能就是某篇博文的一句话,某碗心灵鸡汤就拨动了你心里的那根尘封已久的弦,让你情不自禁的点了个赞,还忍不住的要在下面评论区留下自己此刻心潮澎湃的印记.

JS闭包、作用域链、垃圾回收、内存泄露相关知识小结_javascript技巧

补充: 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 闭包的特性 闭包有三个特性: 1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数和变量不会被垃圾回收机制回收 闭包的定义及其优缺点 闭包 是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量 闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露. 闭包是javascript

JS闭包、作用域链的问题

问题描述 var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ alert(this); return this.name; }; } }; alert(object.getNameFunc()());//输出The Window var name1 = "The Window"; var o

javascript作用域链(Scope Chain)用法实例解析_javascript技巧

本文实例分析了javascript作用域链(Scope Chain)用法.分享给大家供大家参考,具体如下: 关于js的作用域链,早有耳闻,也曾看过几篇介绍性的博文,但一直都理解的模棱两可.近日又精心翻看了一下<悟透Javascript>这本书,觉得写得太深刻,在"代码的时空"一节里有一段介绍作用域链的地方寥寥数语,回味无穷(其实还是理解的模棱两可^_^).现在整理下自己的读书笔记,顺便借鉴网上资源,写下来. 一.从一个简单的问题说起 下面的js代码在页面中运行显示什么结果:

你必须知道的Javascript知识点之&amp;quot;深入理解作用域链&amp;quot;的介绍_javascript技巧

示例代码: 复制代码 代码如下: var xxxVar1 = 1; var outer = function(){     var xxxVar2 = 2;     var results = [];     for(var i = 0; i< 3; i++)    {       var inner = function(){          var xxxVar3 = 3;          return xxxVar3 + xxxVar2 +xxxVar1 + i;       }   

JavaScript之变量、作用域

一.变量 1.基本类型值和引用类型值  js和其他语言一样也分值类型和引用类型.在基本概念那篇博客也纪录了五种常见的基本数据类型:Undefined.Null.Boolean.Number.String.这五种都是按值访问的基本数据类型,可以操作保持在变量中的实际的值.(js和其他语言C#不同的是String也是基本数据类型). 引用类型的值是保存在内存中的对象.js不允许直接访问内存中的对象,不能直接操作对象的内存空间.操作对象是是操作的对象的引用.对于引用类型的值可以为它动态的添加属性. 2

浅谈JavaScript 执行环境、作用域及垃圾回收_javascript技巧

执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.每个执行环境都有一个与之关联的变量对象. 全局执行环境是最外围的一个执行环境.根据JavaScript实现所在的宿主环境不同,表示执行环境的对象也不一样.在Web浏览器中,全局执行环境被认为是window对象.因此,所有的全局变量和函数都是作为window对象的属性和方法创建的. 变量对象:环境中定义的所有变量和函数都保存在这个对象中. 作用域链:当代码在一个环境中执行时,会创建变量对象的一个作用域链.作用域链的用途是保证对执行环

javascript执行环境及作用域详解_javascript技巧

最近在重读<javascript高级程序设计3>,觉得应该写一些博客记录一下学习的一些知识,不然都忘光啦.今天要总结的是js执行环境和作用域. 首先来说一下执行环境  一.执行环境         书上概念,执行环境定义了变量或者函数有权访问的其他数据,决定了他们各自的行为.每个执行环境都有一个与之关联的变量对象.环境中定义的所有变量和函数都保存在这个对象中.虽然我们在编写代码的时候无法访问这个对象,但解析器在处理数据时会在后台用到它. 执行环境是一个概念,一种机制,它定义了变量或函数是否有权