zoukankan      html  css  js  c++  java
  • JavaScriptFunction对象(函数)的声明和作用域

    Funtion 封装了可重复使用的代码块对象,函数名是一个引用函数对象的变量
     声明提前:在程序开始执行之前,将var 变量和function函数提前声明 但赋值并不会提前

    它的三种创建方法:
     创建1
    function fun1(){
    var num =10;
    num++;
    }
    // 创建2  
    var fun2 = function(){// 将函数赋值给变量 声明不会提前
    console.log(1);
    }
    // 创建3 new Funtion()
    var fun3 = new Function("a","b","return a+b;");//所有形参必须放在""中
    var fun4 = Function("a","b","return a+b;");

    函数的提前声明:

    /*f();//2
    function f(){console.log(1)}    
    f();//2
    function f(){console.log(2)}
    f();//2    
    console.log(typeof(f));//function    
    var f = 100;
    console.log(f);//100
    console.log(typeof(f));//number
    f();//报错,TypeError f是一个number类型的原始数据类型,并不是一个函数*/

      执行这一段代码时:函数f()会提前声明 等同于:

      function f(){console.log(1)}
      function f(){console.log(2)}//使用同名函数后者会覆盖前者
      f();//2
      /*f();//2
      f();//2
      console.log(typeof(f));//function
      var f = 100;//定义一个f 变量并赋值为10 这时f已经变成了number类型 不再是function
      console.log(f);//100
      console.log(typeof(f));//number
      f();//报错,TypeError f是一个number类型的原始数据类型,并不是一个函数*/

    作用域:

    在js中变量是有作用域(scope)的 它限定了一个变量的可使用范围

    全局作用域window:全局变量

    函数作用域:局部变量  在函数中 没有用var关键字声明的变量是全局变量

    而作用域链就是多级作用域连续引用形成的结果,

    作用域链在程序运行中访问顺序是:先从局部变量也就是自己的作用域中查找若找不到此变量 再到父级作用域中去寻找变量的值

    借用一段代码来搞清楚作用域链:

  • 相关阅读:
    c#结构体、打他table、excel、csv互转
    WPF 自定义图表(柱状图,曲线图)
    NemaStudio船舶模拟软件下载及破解
    点双连通分量
    HDU4612 Warm up
    边双连通分量
    [Jsoi2010]连通数
    Intern Day73
    Intern Day72
    Intern Day70
  • 原文地址:https://www.cnblogs.com/blogzzy/p/11336823.html
Copyright © 2011-2022 走看看