• JavaScript基础函数体中的唯一var模式(002)


    全局变量是不好的。所以在声名变量的时候,应该采用函数体中的唯一var模式(Single var Pattern)。这个模式有不少好处:

    • 提供了一个唯一的地方来查看函数体中声名的变量
    • 在使用一个变量之前总是先声名,这样未初始化的变量都会被赋值为undefine
    • 让你记得要声名变量。
    • 代码更简洁(因为把多个var变成了一个)

        说来也简单,这个模式就是在函数体的最初,用一个var声名所有本地变量(local variable)。

    function func() {
     var a = 1, b = 2,
        sum = a + b, myobject = {},
        i, j;
        // 函数体...
    }
    

     下面说一个在Javascript函数中本地变量声名的一个常见问题:Hoisting。Hoisting可以理解为变量声名在函数内“提起”。为了解释这一现象,看看下面的代码:

    // antipattern
    myname = "global"; // global variable
    function func() {
        alert(myname); // "undefined"
        var myname = "local";
        alert(myname); // "local"
    }
    func();
    

     在函数中第一次使用的myname本来是想调用全局变量,但得到的结果却是undefined。因为在Javascript是允许在任何地方重复使用var声名变量的,而在函数体内部,变量的声明若在中间位置(用var声明),其效果与在函数体最初声名是一样的,但只是声名却没有初始化,这才出现了undefined的情况。所以上面的代码与下面的效果相当:

    myname = "global"; // global variable
    function func() {
        var myname; // same as -> var myname = undefined;
        alert(myname); // "undefined"
        myname = "local";
        alert(myname); // "local"
    }
    func();
    
  • 相关阅读:
    javascript 字符串截取
    HTML5 转
    Javascript try catch finally
    C#之json字符串转xml字符串
    AspNetCore Json序列化设置
    类加载(对象创建)顺序
    线性表,线性表和链表的区别
    Implement int sqrt(int x).
    Add Binary
    Roman to Integer(将罗马数字转成整数)
  • 原文地址:https://www.cnblogs.com/Bryran/p/3969293.html
Copyright © 2020-2023  润新知