js静态作用域的功能。

JS的作用域是个比较复杂的东西

JS的作用域是静态的,当定义一个function时,function的作用域是定义function时所在的作用域,而不是调用function时所在的作用域。

当调用一个function时,就会创建一个新的作用域,在这个作用域中用var定义的变量就是局部变量,一般情况下function执行结束之后这个调用时所创建的作用域就会被系统回收。

在function圈套定义时,如果里面定义的function被保存了下来(如:赋给一个全局变量)。那么它所在的作用域(调用外面function时所创建的作用域)也必须一起保存下来(也就是说外面function执行结束时这个调用时所创建的作用域不会被系统回收,要等到保存下来的function被系统回收时系统一起回收)。
作用域保存下来在这个作用域中的所有局部变量当然也都保存了下来。

(0)

相关推荐

  • js面向对象 多种创建对象方法小结

    开始创建对象: 1.对象字面量. 复制代码 代码如下: var clock={ hour:12, minute:10, second:10, showTime:function(){ alert(this.hour+":"+this.minute+":"+this.second); } } clock.showTime();//调用 2.创建Object实例 复制代码 代码如下: var clock = new Object(); clock.hour=12; cl

  • js面向对象之静态方法和静态属性实例分析

    本文实例讲述了js面向对象之静态方法和静态属性.分享给大家供大家参考.具体分析如下: 先看如下代码: 复制代码 代码如下: <script type="text/javascript"> function Bird(){  this.wing = 2;  this.fly = function(){   alert("我是鸟,我会飞");  } } var maque = new Bird();//创建maque对象后,我们可以使用Bird的方法和属性

  • js面向对象编程之如何实现方法重载

    js中如何实现方法重载?这涉及到三个问题 1.同名函数的调用问题 2.函数中特殊的参数arguments 3.如何利用arguments实现方法重载 1.同名函数的调用问题 都知道在js中如果存在多个名称相同的函数,则调用实际每次都只使用最后一个,js其实是没有重载的,也就是说,如果定义了多个同名的函数,单参数不一样,在调用时,js不管参数个数,只管前后顺序 例如: function test1(arg1) { alert("参数1:"+arg1); } function test1(

  • js静态方法与实例方法分析

    js静态方法 复制代码 代码如下: function foo(){} // 声明类 foo.method = function(){} // 方法体 使用:foo.method() js实例方法 function foo(){ // 声明类 this.method = function(){ // 方法体 } } 使用:var f = new foo(); f.method();

  • js 静态动态成员 and 信息的封装和隐藏

    静态动态成员 一下用面向对象的相关概念来解释js中的仿面向对象,因为js中不像其他语言,不存在面向对象语言的相关特性,但可以通过一些技巧来模仿面向对象.我用同样的概念来概述js的这些方仿面向对象的概念,因为他们的行为作用类似. 在js中有如下函数 复制代码 代码如下: function test(){ var var_value; this.this_value; } 其中,var_value是静态成员,this_value是动态成员. 静态成员是关联到类本身的,只能在类的层次进行调用.这种特性

  • JS中的prototype与面向对象的实例讲解

    复制代码 代码如下: <script language="javascript" type="text/javascript">         //(1)把一个方法变成一个对象,为对象创建方法和属性         var Name = function () {             //通过prototype给一个对象创建方法             Name.prototype.Add = function (num, title) {    

  • js类的静态属性和实例属性的理解

    复制代码 代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>测试</title> </head> <body> <script type="text/javascript"><!-- function Man

  • js分解url参数(面向对象-极简主义法应用)

    修改前: 复制代码 代码如下: <script type="text/javascript"> var url="www.taobao.com?key0=a&key1=b&key2=c"; function parseQueryString(url){ var str=url.split("?")[1], items=str.split("&"); var arr,name,value; f

  • js+php实现静态页面实时调用用户登陆状态的方法

    本文实例讲述了js+php实现静态页面实时调用用户登陆状态的方法.分享给大家供大家参考.具体分析如下: 在程序开发中,经常会把页面做成html的静态形式,这样可以减轻服务器负载,但是也存在一个问题就是当注册用户登陆时,要在html页面显示登陆成功或需要登陆的提示,这样我们就必须想其它办法来实现了,下面我们就是利用js+php来实例的,当然还有ajax也可以实现,代码如下: 复制代码 代码如下: <!doctype html public "-//w3c//dtd xhtml 1.0 tra

  • js静态作用域的功能。

    JS的作用域是个比较复杂的东西 JS的作用域是静态的,当定义一个function时,function的作用域是定义function时所在的作用域,而不是调用function时所在的作用域. 当调用一个function时,就会创建一个新的作用域,在这个作用域中用var定义的变量就是局部变量,一般情况下function执行结束之后这个调用时所创建的作用域就会被系统回收. 在function圈套定义时,如果里面定义的function被保存了下来(如:赋给一个全局变量).那么它所在的作用域(调用外面fu

  • 实例详解JavaScript静态作用域和动态作用域

    目录 前言 静态作用域与动态作用域 静态作用域执行过程 动态作用域执行过程 习题 习题一 习题二 习题三 总结 前言 在文章最开始,先学习几个概念: 作用域:<你不知道的js>中指出,作用域是一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称进行变量查找.简单来说,作用域规定了如何查找变量. 静态作用域:又称词法作用域,函数的作用域在函数定义的时候就决定了,通俗点说就是你在写代码时将变量和块作用域写在哪里决定的. 动态作用域:函数的作用域在函数调用时才决定的. 静

  • 详解js静态检查工具eslint配置文件

    ESLint 是一个 Javascript 静态检查工具,它可以帮你养成良好的编程习惯 { // 环境定义了预定义的全局变量. "env": { //环境定义了预定义的全局变量.更多在官网查看 "browser": true, "node": true, "commonjs": true, "amd": true, "es6": true, "mocha": true

  • Node.js静态服务器的实现方法

    当你输入一个url时,这个url可能对应服务器上的一个资源(文件)也可能对应一个目录. So服务器会对这个url进行分析,针对不同的情况做不同的事. 如果这个url对应的是一个文件,那么服务器就会返回这个文件. 如果这个url对应的是一个文件夹,那么服务器会返回这个文件夹下包含的所有子文件/子文件夹的列表. 以上,就是一个静态服务器所主要干的事. 但真实的情况不会像这么简单, 我们所拿到的url可能是错误的,它所对应的文件或则文件夹或许根本不存在, 又或则有些文件和文件夹是被系统保护起来的是隐藏

  • JS实现自定义弹窗功能

    众所周知,浏览器自带的原生弹窗很不美观,而且功能比较单一,绝大部分时候我们都会按照设计图自定义弹窗或者直接使用注入layer的弹窗等等.前段时间在 慕课网 上看到了一个自定义弹窗的实现,自己顺便就学习尝试写了下,下面是主要的实现代码并添加了比较详细的注释,分享出来供大家参考.(代码用了ES6部分写法如需兼容低版本浏览器请把相关代码转成es5写法,后面有时间更新为一个兼容性较好的es5版本) HTML部分:(没什么内容 放置一个按钮调用函数,js中调用实例即可供参考) <!DOCTYPE html

  • JS立即执行函数功能与用法分析

    本文实例讲述了JS立即执行函数功能与用法.分享给大家供大家参考,具体如下: 相信大家经常会遇到下面这两种写法: (function(){ ... })() 和 (function(){ ... }()) 关于这样写是什么意思呢?有什么区别呢? 在此之前,我们需要了解几个概念: 函数声明.函数表达式.匿名函数 函数声明: function fnName() {...} ; 使用 function 关键字声明一个函数,再执行一个函数名,叫函数声明. 函数表达式: var fnName = funct

  • JavaScript静态作用域和动态作用域实例详解

    静态作用域指的是一段代码,在它执行之前就已经确定了它的作用域,简单来说就是在执行之前就确定了它可以应用哪些地方的作用域(变量). 动态作用域–函数的作用域是在函数调用的时候才决定的 JavaScript采用的是词法作用域即静态作用域: // 静态作用域: var a = 10; function fn() { var b = 1; console.log(a + b); } fn(); // 11 在创建fn函数时的时候就已经确定了它可以作用哪些变量,如果函数fn里面有变量a就直接操作变量a,

  • PHP中Static(静态)关键字功能与用法实例分析

    本文实例讲述了PHP中Static(静态)关键字功能与用法.分享给大家供大家参考,具体如下: 1.什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性.但在PHP中用 static 关键字来定义静态方法和属性, 也可用于定义静态变量以及后期静态绑定. 2.为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变

  • node.js+express留言板功能实现示例

    目录 留言板 所需类库 开源项目 项目结构 留言板 基于nodejs+express+art-template的留言板功能.包含列表界面.添加界面和发送留言功能. 所需类库 直接copy以下package.json 然后直接 npm install 或者yarn install 即可. package.json所需内容如下. { "name": "nodejs_message_board", "version": "2021.09&qu

  • Node.js实现登录注册功能

    本文实例为大家分享了Node.js实现登录注册功能的具体代码,供大家参考,具体内容如下 目录结构 注册页面: reg.html <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial

随机推荐