zoukankan      html  css  js  c++  java
  • JS作用域和ASP(vbs)作用域比较

    一、js作用域,先上图:

    以上代码执行的效果是,依次弹出 undefined, undefined, a, a,为什么是这样的结果啦?因为JS的作用域为链式作用域.

    作用域链:

    用VAR声明一个变量时,就为该变量所在的对象添加了一个属性,由于JS的变量都是对象的属性,而该对象可能又是其它对象的属性,而所有的对象都是WINDOWS属性,所以这些对象的关系可以看作一条链,链头就是变量的所处对象,链尾就是WINDOWS对象。

    我们来分析一下上面函数中变量的作用域链。第一个alert输出的str,它的作用域链是str-自运行函数(+function)-windows,当执行自运行函数(+function)时,将创建函数的执行环境,并对该str置于链头,所以此str为自运行函数内的,但alert时,并没有为其赋值,所以此时输出str为undefined

    第二个alert输出的str,它的作用域链是str-f2-自运行函数(+function)-windows,输出undefined原因同上。

    第三个alert输出的str,它的作用域链是str-windows,所以输出a

    第四个alert输出的str,它的作用域链同第三个。

    理解了上面,我们来总结一下JS的作用域:

    1、 JS没有var的变量都为全局变量,且为windows对象的属性(这个李源老师讲过了,我不再证明)

    2、 函数内(函数内的函数除外)定义的变量在整个函数内部有效。

    3、 函数内的变量取代全局同名变量。

    4 、没块的使用域。(这个李源老师讲过了,我不再证明)

    二、asp的使用域,同样先上图

    以上代码输入字符串: 1 a 2 b 3

    通过以上代码我们得出:

    1、 函数中定义的变量的作用域是整个函数,不管变量在函数中那个位置定义。

    2、 函数中同名的变量会取代全局变量。

    3、 隐式声明的变量的作用域取决于其声明的位置,如果在函数中,则些变量只在函数中有效,如果在函数外,则整个页面有效。

    4、 没有块级作用域。

    VB中定义变量的作用域有Public/Private/Static、Dim,但在ASP中,并没有static。

    在ASP中,我将作用域划分为页面级,类级,函数级,页面级和函数级用dim,类级用public/private

  • 相关阅读:
    P3 创建项目(下)
    P2 创建项目(中)
    P1 创建项目(上)
    ASP.NET Core 3.x 入门视频(完结)
    网易云微专业《职场人必学的Python技能课》
    01.Python配置与运行
    阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-6 收货地址
    ASYNC PROGRAMING IN JAVASCRIPT[转]
    Bluebird-NodeJs的Promise
    理解Nodejs的Event Loop
  • 原文地址:https://www.cnblogs.com/echosong/p/3628718.html
Copyright © 2011-2022 走看看