首页 > 编程语言 >js中变量名提升和函数名提升 Web程序

js中变量名提升和函数名提升 Web程序

时间:2022-11-28 15:22:25浏览次数:43  
标签:function Web 20 alert num 提升 func var js

首先,js中变量没有块级作用域,但是有函数作用域,即只有函数可以约数变量的作用域。

并且,函数的实质也是一个变量,所以可以改变它的值,即赋值。所以变量名提升和函数名提升非常相像。

1.变量名的提升发生在函数内部。看下面的例子。说明:第一个因为弹出undefined,相当于在上面定义了var num;因为函数内部,定义了var num=20;就相当于在一开始定义了var num;这就是变量名的提升。

    var num = 10;

    function func() {
        alert(num); //undefined
        var num = 20;
        alert(num); //20
    }
    func();
    alert(num) //10

相当于:

var num = 10;

    function func() {
        var num;
        alert(num); //undefined
        var num = 20;
        alert(num); //20
    }
    func();
    alert(num) //10

如果没有var

var num = 10;

    function func() {

        alert(num); //10
        num = 20;
        alert(num); //20
    }
    func();
    alert(num) //20

函数嵌套道理一样

 var num = 10;

        function func() {
            alert(num); //undefined
            num = 20;

            function func1() {
                alert(num); //undefined
                var num = 40;
                alert(num) //30
            }
            func1()
            alert(num); //20
        }
        func();
        alert(num) //10

2.函数名提升发生在lambda函数上,即匿名函数。和变量名提升一个道理。

        var func = function () {
            alert("abc")
        };

        function func1() {
            func(); //func is not a function
            var func = function () {
                alert("123")
            };
            func()
        }
        func1();

省去var

  var func = function () {
            alert("abc")
        };

        function func1() {
            func(); //abc
            func = function () {
                alert("123")
            };
            func()//123
        }
        func1();

改变函数,不使用匿名函数

        var func = function () {
            alert("abc")
        };

        function func1() {
            func(); //123
            function func() {
                alert("123")
            };
            func()//123
        }
        func1();

标签:function,Web,20,alert,num,提升,func,var,js
From: https://www.cnblogs.com/net-sky/p/16932276.html

相关文章

  • shell 使用jq解析json字符串数组
    echojson.txt|jq'.' 输出整个json字符串echojson.txt|jq'.[0]' 取出数组中第一个objectechojson.txt|jq'.[0].name' 取出数组第一个object中键为name的值......
  • JsonCpp serialize vector which contains class
    //Book.cpp#include<iostream>usingnamespacestd;classBook{public:intIdx;char*ISBN;char*Name;char*Abstract;char*Content......
  • Weblogic Cluster BEA-000116故障处理
    部署环境:Weblogic10MP2forUNIX实验:WeblogicCluster:(MServer1,MServer2)7222MulticastIP:239.192.0.0AdminServer:192.168.1.33:7001MServer1:192.168.1.33......
  • WebLogic ClassLoader
    WebLogicClassLoaderWeblogic中发布的一个应用一般目录结构如下对应的各层级结构如下ApplicationClassLoader用来加载EJBJARS、APP-INF/lib、APP-INF/classes、EJBJARS......
  • Web coursework 2
    1respeonsweb2manyjavascriptorJquery 3twoadvancedfeature detailed:Css:noerrorandboostsript javascriptandJQUERYisveryimport,needthe......
  • 【Vuejs】114-从头开始学习Vuex
    一、前言当我们的应用遇到多个组件共享状态时,会需要多个组件依赖于同一状态抑或是来自不同视图的行为需要变更同一状态。以前的解决办法:a.将数据以及操作数据的行为都定义在......
  • 【JS】121-重温基础:流程控制和错误处理
    本文是 重温基础 系列文章的第二篇,需要让自己静下心来,学习,养成好习惯。本章节复习的是JS中的控制流语句,让我们能实现更多的交互功能。注意一点:在ES6之前,JS是没有块作用域......
  • 【JS】120-重温基础:语法和数据类型
    最近开始把精力放在重新复习JavaScript的基础知识上面,不再太追求各种花枝招展的前端框架,框架再多,适合实际项目才是最重要。上星期在掘金发布了几篇文章,其中最大块算是 【复......
  • 【JS】126-重温基础:时间对象
    本文是 重温基础 系列文章的第七篇。今日感受:做好自律。本章节复习的是JS中的时间对象,一些处理的方法。前置知识:JavaScript中的时间是以1970年1月1日00:00:00以来的毫秒......
  • 【JS】123-重温基础:函数
    本文是 重温基础 系列文章的第四篇。今日感受:常怀感恩之心,对人对己。本章节复习的是JS中的基础组件之一,函数,用来复用特定执行逻辑。1.定义函数定义函数有两种方法:函数声......