js变量长度限制(js改变变量类型)

图片授权基于 CC0 协议

变量提升涉及到的知识点很少,可以直接上代码。

var web = \\\'JavaScript\\\'

上面「声明变量 web 并赋值」其实是分两步执行:

var web;//1、先声明变量;//执行其它代码web = \\\'JavaScript\\\'//2、在指定的作用域区赋值

所以,就引出一个问题,如果先输出后定义变量会怎样?

console.log(web);//undefinedvar web = \\\'JavaScript\\\'//执行赋值

打印变量 web 会输出 undefined 而不是 is not defined ,它的执行逻辑是这样的:

    var web;//1、先提升变量console.log(web);//2、控制台输出:undefinedweb = \\\'JavaScript\\\'//3、变量赋值

    变量 web 会被提升到最上面;

    除了变量提升还有函数提升。

    函数表达式

    webFn();//控制台输出:webFn is not a function//函数表达式var webFn = function(){ console.log(\\\'JavaScript2\\\')}

    和变量提升同理。

    函数声明

    webFn();//控制台输出:JavaScript//函数声明function webFn(){ console.log(\\\'JavaScript\\\');}

    上面代码真实的执行逻辑是:

    function webFn(){ console.log(\\\'JavaScript\\\');}webFn();//JavaScript

    声明的函数会被提升到最顶部。

    那定义函数名和函数表达式名称相同,那如何处理?

    //函数声明function webFn(){  console.log(\\\'JavaScript1\\\');}//函数表达式var webFn = function(){  console.log(\\\'JavaScript2\\\')}webFn();//控制台输出:JavaScript2

    函数表达式会提前声明函数,但只有执行完后,才会赋值。但「函数声明」会提升到最顶部。


    参考资料:

    [1]《你不知道的 JavaScript 上 》

    原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34577.html

    (0)
    小道研究的头像小道研究
    上一篇 2024年4月15日
    下一篇 2024年4月15日

    相关推荐

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注