zoukankan      html  css  js  c++  java
  • javascript 函数的变量与作用域

    函数内部变量的几种特别情况:

    1、全局变量与局部变量

    函数内部变量声明带var关键字:

    1 function global(){
    2      var name = "lilei"  //带var的变量声明,仍是局部变量,外部找不到
    3 }
    4 global();
    5 console.log(name) //无法打印

    函数内部变量声明不带var关键字:

    1 function global(){
    2     name = "lilei" //此时是全局变量
    3 }
    4 global();
    5 console.log(name) //'lilei'

    2、函数内部变量提升

    1 function test(){
    2     console.log(v);
    3     var v = 1;
    4 }
    5 test(); //undefined

    上述代码等同于 

    1 function test(){
    2     var v = undefined;
    3     console.log(v);
    4     v =1;
    5         }
    6 test()//undefiend

    注意:变量声明会提升到函数顶部,但是变量赋值还是在原来的位置

    3、函数作用域和变量声明提升的结合

    var name = 'Nelsen'
    function global(){
        console.log(name)
    }
    global(); //'Nelsen'

    函数内部没有声明name,也没有初始化,此时函数会沿着作用域链查找到全局作用域,看是否有同名的变量声明,有则返回改初始化值

    1 var name = 'Nelsen';
    2 function global(){
    3     console.log(name)
    4     var name;
    5 }
    6 global(); //undefined

    尽管此时函数外部也声明name并初始化,函数内部声明了name阻断了继续向外部查找同名变量,所以返回的是默认的undefined

    3、javascript 引擎分析代码的三个步骤

     ①、声明并初始化参数,

     ②、声明局部变量,但不是初始化他们,

     ③、声明并初始化函数

    //变量在声明之前是没有值的

    1 var name = 'Nelsen';
    2 function test2(){
    3       console.log(name)
    4       var name;
    5 }
    6 test2()  //undefined

    但是如果变量作为参数传入,此时变量就有值了

    1 var name = 'Nelsen';
    2 function test2( name ){
    3      console.log(name)
    4      var name;
    5 }
    6 test2("Nelsen")    //Nelsen
  • 相关阅读:
    RHEL7: How to configure a rc-local service
    安装 jemalloc for mysql
    aws rhel 7 安装GUI ,配置VNC
    官方推荐的MySQL参数设置值
    Linux HugePages及MySQL 大页配置
    Linux Transparent Huge Pages 对 Oracle 的影响
    Linux的Transparent Hugepage与关闭方法
    Linux HugePages 配置与 Oracle 性能关系说明
    How To Change Log Rate Limiting In Linux
    MySQL 8.0窗口函数
  • 原文地址:https://www.cnblogs.com/Nelsen8/p/7076745.html
Copyright © 2011-2022 走看看