美文网首页
变量的查缺补漏

变量的查缺补漏

作者: 弱冠而不立 | 来源:发表于2020-08-13 17:11 被阅读0次

显示声明和隐式声明

  1. var 声明的变量是显示声明,只在当前作用域有效,例如:
<script type="text/javascript">
        var username = "xiao";
        function getPassword() {
            var password = "2333";
            console.log("func-username",username);
            console.log("func-password",password);
        }
        getPassword();
        console.log("username",username);
        console.log("password",password)
    </script>
password只在函数内有效,在函数外调用报错
  1. 直接赋值给一个变量则是隐式声明,无论在哪赋值都是全局作用域
    例如:
<script type="text/javascript">
        var username = "xiao";
            function getPassword() {
                password = "2333";
                console.log("func-username",username);
                console.log("func-password",password);
            }
            // console.log("before-func-password",password);
            getPassword();
            console.log("username",username);
            console.log("password",password);
    </script>
在函数外也可以使用隐式声明的password
但要是在函数调用前就打印 password 的话则会报错,原因是因为,函数尚未调用,尚未隐式声明password。
这是在函数调用前打印password的情况
注:var 声明的变量不能用delete删除,但是var声明的变量名是 name的全局变量 居然能直接删除,原因是因为window对象下已经有一个名为name的变量,同理要是var声明一个变量名为location的变量名也能直接删除。
window对象下的变量名称

变量提升

实际上是变量和函数的声明提升
varfunction 在全局或者局部作用域声明变量时,会将声明替提升到当前范围的顶端。
例如:

<script type="text/javascript">
        var username = "xiao";
        function getUsername() {
            console.log(username);
            var username = "ming";
            console.log(username);
        }
        getUsername();
    </script>

以前我天真的以为,会输出xiao ming


实际输出的结果

但实际上因为变量声明提升的原因,上面代码相当于:

<script type="text/javascript">
        var username;
        username = "xiao";
        function getUsername() {
            var username;
            console.log(username);
            username = "ming";
            console.log(username);
        }
        getUsername();
    </script>

let没有声明提升,例如

<script type="text/javascript">
        function getPassword() {
            console.log(password);
            let password = "2333";
            console.log(password);
        }
        getPassword();
    </script>
此时直接报错,password未定义

相关文章

  • 变量的查缺补漏

    显示声明和隐式声明 用 var 声明的变量是显示声明,只在当前作用域有效,例如: 直接赋值给一个变量则是隐式声明,...

  • 查缺补漏

    计算机本科研究生相关课程参加开源项目spring源码

  • 查缺补漏

    查缺补漏是学习中最通俗的方法,知道自己哪方面知识点薄弱,就针对性的去学习,假以时日的去练习,就能攻克难点,薄弱知识...

  • 查缺补漏

    一.表格常用样式 vertical-align: 垂直方向的对齐方式middle top bottom bor...

  • 查缺补漏

  • Promise 查缺补漏

    promise 中 resolve 参数为一个 promise 时 p1是一个 Promise,3 秒之后变为re...

  • JavaScript查缺补漏

    语法 每个语句以;结束,语句块用{...}。但是,JavaScript并不强制要求在每个语句的结尾加; 第一种是=...

  • 查缺补漏 如饥似渴

    为了讲好Servlet,从头到尾的看视频,完整的扫描知识点,把之前缺少的、遗漏的都补上,从未如此踏实充足。就像搭积...

  • jQuery 查缺补漏

    eq .eq( index )Returns: jQueryDescription: Reduce the set...

  • 质量查缺补漏

    ?? ????????????????????????? ????????????????????????? ??...

网友评论

      本文标题:变量的查缺补漏

      本文链接:https://www.haomeiwen.com/subject/taterktx.html