zoukankan      html  css  js  c++  java
  • JavaScript中的变量提升和函数提升

    在EcmaScript5中只有全局作用域和函数作用域,EcmaScript6增加了块级作用域。
    块级作用域(一对花括号{}即为一个块级作用域)

    变量提升

    console.log(name);  //undefined
    var name = "Hello JoeXin!";
    console.log(name);  //Hello JoeXin!
        function f() {
            console.log(name); //undefined
            var name = "JoeXin";
            console.log(name); //JoeXin
        }
    f();       
    

    实质

    var name; // 变量提升,全局作用域范围内,此时只是声明,并没有赋值
    console.log(name); // undefined
    name = 'Hello JoeXin!'; // 此时才赋值
    console.log(name); // 打印出Hello JoeXin!
     
    function fn () {
      var name; // 变量提升,函数作用域范围内
      console.log(name);
       name = 'JoeXin';
      console.log(a);
    }
    fn();
    

    函数提升

    js中创建函数有两种方式:函数表达式和函数声明方式。只函数声明方式才存在函数提升!

    函数声明方式提升

    
    function myTest(){
        foo();
        function foo(){
            alert("我来自 foo");
        }
    }
    myTest();
    
    

    函数表达式方式提升 失败

    function myTest(){
       foo();
       var foo =function foo(){
            alert("我来自 foo");
       }
    }
    myTest();  //  打印出  foo is not a function
    
  • 相关阅读:
    mangodb学习0.1 概念
    express 学习笔记(一)路由
    vue配置路由
    screenX, clientX, pageX
    svg的世界、视窗、视野
    window.print()打印网页(一)
    cookie基础
    BOM基础
    Java三大特征:封装 继承 多态
    面向对象
  • 原文地址:https://www.cnblogs.com/joexin/p/7215276.html
Copyright © 2011-2022 走看看