Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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 从window.onload内部使用函数更改全局变量值_Javascript_Jquery_Function_Switch Statement_Onload - Fatal编程技术网

Javascript 从window.onload内部使用函数更改全局变量值

Javascript 从window.onload内部使用函数更改全局变量值,javascript,jquery,function,switch-statement,onload,Javascript,Jquery,Function,Switch Statement,Onload,我正在做一个计算器。为什么addToStr函数不能更改全局变量的值?(为了缩短代码,我只对一些switch语句进行了示例) 在javascript中不能通过引用传递值,它认为您只是在尝试使用变量的值。要做到这一点,您需要使用指针,而在javascript这样的语言中,是不可用的。为了使用当前方法实现这一点,您需要为每个引用创建一个全局变量,并每次使用不同的函数设置它们。(每个变量需要一个单独的函数,并且只接受'value'作为参数;并将变量设置为传递给函数'addTo'的相应值)。然而,这种方法

我正在做一个计算器。为什么addToStr函数不能更改全局变量的值?(为了缩短代码,我只对一些switch语句进行了示例)

在javascript中不能通过引用传递值,它认为您只是在尝试使用变量的值。要做到这一点,您需要使用指针,而在javascript这样的语言中,是不可用的。为了使用当前方法实现这一点,您需要为每个引用创建一个全局变量,并每次使用不同的函数设置它们。(每个变量需要一个单独的函数,并且只接受'value'作为参数;并将变量设置为传递给函数'addTo'的相应值)。然而,这种方法似乎没有必要,而且效率很低。只要在代码中手动设置它们,就不会有任何伤害;像这样:

testStr += val; // This should not be nested inside a function like addToStr.
。。。而不是为每个引用使用单独的函数,这在您的情况下或一般情况下都不是必需的。
您还可以在函数中返回新值并使用该值,但请再次使用;没有必要

为什么不将全局变量的名称作为字符串传递,并使用
window[globalVarName]+=val
?我将放弃该函数,谢谢。我读了关于“按值传递”与“参照传递”的文章,雷·佩雷亚的回答很有帮助。@sniels不起作用。如果我理解正确的话,这些值是在函数内部传递和修改的,但这种修改只存在于函数内部。为了全局更改它,需要:运行函数(更改发生在函数内部),然后将函数的返回赋值给全局变量,如
globalVar=addToStr(globalVar,value)。正如WEB_UI所述,效率非常低。通过
窗口
或引用全局范围的
对象设置它们仍然是毫无意义的,但很好的一点是,您可以在函数之外使用它。对于像javascript这样的脚本语言,通过引用传递不是一个很好的选择;除非你想面向对象,传递对象(甚至是模块化的,传递对象),这是可行的,但我不建议全局存储变量。将所有内容包装到另一个函数中,以创建一个闭包并遵循WEBUI的建议。
testStr += val; // This should not be nested inside a function like addToStr.