zoukankan      html  css  js  c++  java
  • 变量的作用域(一)

    函数运行过程中,变量的查找是由内向外逐层查找,直到window域
    如没有找到则返回undefined,或者is not defined
    如果是赋值操作,在没有找到的情况下,会在window域下面生成一个变量,并为之赋值,这样这个变量就会变成全局变量

    添加和不添加var声明变量的比较

    console.log(window.d);
    conosle.log(window.e);

    前两个变量d 和 e 在window 这个域里面没有这样的变量,所以返回undefined undefined

    function fun(){
      d = 5;
      var e = 6;
    }
    fun()


    通过运行fun函数, window 域下面的一个变量d被赋值,e就变成了一个函数内部的局部变量

    conosle.log(window.d);  // 5
    console.log(window.e);  //undefined
    console.log(e);      // e is not defined


    不加var 的变量通过赋值不会全部变成全局变量的

    例如:

    function fun1(){
      var a;
      function fun2 (){
        a = 6
        var b = 7
        c = 8
      }
      fun2()
    }
    fun1()
    console.log(window.c)    //8
    console.log(c)    //8
    console.log(a)    // a is not defined 错误
    console.log(b)    //如上面打印的变量a的语句不注释,这此语句不会被执行,因为JS执行特性为从上向下执行,报错后,后面的代码将不会被执行

    fun2函数内部给变量a赋值为6但变量a是一个函数内部的局部变量,在全局调用的就会找不到这个变量而报错(a is not defined),声明了一个局部变量 b 值为7,在全局调用b也会找不到这个变量报错(b is not defined),变量c 在函数内部没有找到声明的局部变量,就会一直向上层搜索,一直到window,如没有找到已经声明的变量,就会在window域下面声明一个变量,并给这个变量赋值

    如没有赋值操作,调用c 和 window.c的区别

    var a = 1
    function fun() {
      console.log(a);        // 1
      console.log(window.b);  // undefined
      console.log(b);      // b is not defined , 单独调用,则作为属性来查找,没有就会返回is not defined
    }
    fun();
  • 相关阅读:
    python字典练习2
    python字典小例子1
    尚硅谷linux学习笔记(待更新)3
    python字典 更新
    尚硅谷linux学习笔记(待更新)
    thymeleaf 无法正常解析页面(本地可以正常访问某个请求,并可以返回页面,但服务端访问出现找不到模板)
    thymeleaf关于Map的取值
    python练习——列表练习1
    如何在thymeleaf和freemarker的url中绑定传递的参数
    使用js获取项目url地址
  • 原文地址:https://www.cnblogs.com/Hanson823/p/10212918.html
Copyright © 2011-2022 走看看