Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript全局变量或对象变量_Javascript - Fatal编程技术网

Javascript全局变量或对象变量

Javascript全局变量或对象变量,javascript,Javascript,我更喜欢为我的所有网站声明一个Javascript文件。我试图减少全局变量的使用。下面是我的示例,在这两种情况下,每个对象都有一个myName字段 我想知道它们何时初始化 在记忆和效率方面,哪一个更有效 对于变量a,声明a.myName是否与全局“var myName=Rebecca”相同 谢谢它们将在第一次遇到语句时初始化。在a中,'Rebecca'被初始化为myName键的值。在b中,它只是myName(匿名)函数内部的数据a会稍微更有效,因为它避免了函数调用。在这个简单的例子中,我还发现它

我更喜欢为我的所有网站声明一个Javascript文件。我试图减少全局变量的使用。下面是我的示例,在这两种情况下,每个对象都有一个myName字段

  • 我想知道它们何时初始化
  • 在记忆和效率方面,哪一个更有效
  • 对于变量a,声明a.myName是否与全局“var myName=Rebecca”相同

  • 谢谢

    它们将在第一次遇到语句时初始化。在
    a
    中,
    'Rebecca'
    被初始化为
    myName
    键的值。在
    b
    中,它只是
    myName
    (匿名)函数内部的数据
    a
    会稍微更有效,因为它避免了函数调用。在这个简单的例子中,我还发现它更具可读性


    我发现将所有内容放在一个文件中的选择是有问题的。在某些情况下,您需要模块化设计。由于您担心效率(尽管可能过早),请注意,如果页面包含不需要的代码,那么拥有一个大文件实际上会影响性能。

    它们将在第一次遇到语句时初始化。在
    a
    中,
    'Rebecca'
    被初始化为
    myName
    键的值。在
    b
    中,它只是
    myName
    (匿名)函数内部的数据
    a
    会稍微更有效,因为它避免了函数调用。在这个简单的例子中,我还发现它更具可读性


    我发现将所有内容放在一个文件中的选择是有问题的。在某些情况下,您需要模块化设计。由于您担心效率(尽管可能过早),请注意,如果页面包含不需要的代码,那么拥有一个大文件实际上会影响性能。

    a没有任何意义,因为您正在记录函数引用。B是一种方法,因为您实际上使用()调用该方法。

    a没有任何意义,因为您正在记录函数引用。B是一种方法,因为您实际上是在使用()调用该方法。

    1)除非您在事件处理程序中声明对象,否则在浏览器中处理脚本时会初始化它们。在这种情况下,对象是在执行事件脚本时创建的

    2) 就效率而言,
    a
    可能会更有效率。请注意,在第一种情况下使用
    a.myName
    ,在第二种情况下使用
    b.myName()

    3) 不可以。如果为对象的属性指定值,则必须始终通过对象获取该值。在这种情况下,
    a.myName
    a['myName']

    1)除非您在事件处理程序中声明对象,否则在浏览器中处理脚本时会初始化它们。在这种情况下,对象是在执行事件脚本时创建的

    2) 就效率而言,
    a
    可能会更有效率。请注意,在第一种情况下使用
    a.myName
    ,在第二种情况下使用
    b.myName()

    3) 不可以。如果为对象的属性指定值,则必须始终通过对象获取该值。在这种情况下,
    a.myName
    a['myName']

  • 我相信这些将以相同的方式初始化(即当达到代码时)。不同的是,当它们被初始化时发生了什么,当它们的数据被实际需要时,负载被放置在哪里

  • 对我来说,这在很大程度上取决于你对
    myName
    的期望。如果它只是一个字符串,我会避开这个函数,选择a。另一方面,如果涉及大量逻辑,并且可能不需要调用该逻辑(例如,如果只有当用户单击按钮或应用程序达到某个状态时才执行该逻辑),我会选择b。据我所知,该函数确实会消耗内存,不会被垃圾收集(这是一个负数),但它也不会消耗CPU资源,直到实际需要它(这可能是一个巨大的加号)

  • 我不确定我是否理解这个问题,但我想说这是不一样的。如果
    a
    的唯一成员是
    myName
    ,那么这两个成员是等价的(都占据了全局名称空间。但是如果您有多个属性,节省的空间就显而易见了。从您的示例中,我想您显然理解这一点,所以我可能也不理解这个问题

  • 我相信它们将以相同的方式初始化(即当到达代码时)。不同的是,当它们被初始化时发生了什么,以及当它们的数据实际需要时,加载在哪里

  • 对我来说,这在很大程度上取决于你在
    myName
    中所期望的内容。如果它只是一个字符串,我会避开函数,选择选项a。另一方面,如果涉及大量逻辑,并且可能不需要调用该逻辑(例如,如果它只在用户单击按钮或应用程序达到某个状态时执行),我会选择b。据我所知,该函数确实会消耗内存,不会被垃圾收集(这是一个负数),但在实际需要之前它也不会消耗CPU资源(这可能是一个巨大的加号)

  • 我不确定我是否理解这个问题,但我想说它不一样。如果
    a
    的唯一成员是
    myName
    ,那么两者是等价的(两者都占用了全局名称空间。但是如果您有多个属性,那么节省的空间就显而易见了。从您的示例中,我认为您清楚地理解了这一点,因此我可能也不理解这个问题


  • 实际上,当我需要这些变量时,我已经准备好使用我的内存和cpu了。我只是想懒洋洋地加载我的字符串变量。我是l的超级粉丝
    var a = {
       myName : 'Rebecca' ,
    
       sayHello : function() {
          console.log(this.myName);
       }
    };
    
    var b = {
       myName : function() {
          return 'Rebecca';
       },
    
       sayHello : function() {
          console.log(this.myName());
       }
    };