Javascript 是否每次调用函数时都会重新创建函数中声明的字符串变量?
如果您有如下功能:Javascript 是否每次调用函数时都会重新创建函数中声明的字符串变量?,javascript,Javascript,如果您有如下功能: function test() { var hello = "hello world" } test(); test(); test(); hello变量会被重新创建三次吗?还是会存储值“hello world”并创建变量,但每次都设置为指向内存中的同一位置?我也是在现代浏览器/JS引擎的背景下问这个问题。是的 但是,您可以创建一个IIFE(立即调用的函数表达式),它返回一个函数。这样就不会在每次调用返回的函数时都重新实例化它 var hi = (function()
function test() {
var hello = "hello world"
}
test();
test();
test();
hello变量会被重新创建三次吗?还是会存储值“hello world”并创建变量,但每次都设置为指向内存中的同一位置?我也是在现代浏览器/JS引擎的背景下问这个问题。是的
但是,您可以创建一个IIFE(立即调用的函数表达式),它返回一个函数。这样就不会在每次调用返回的函数时都重新实例化它
var hi = (function() {
var hello = "Hello world";
return function() {
return hello;
}
}());
hi(); // "Hello world";
但是,这可能会因运行的解释器/JIT编译器而异。他们的一些优化可以优化您的代码,使其不会每次都重新实例化…是的
但是,您可以创建一个IIFE(立即调用的函数表达式),它返回一个函数。这样就不会在每次调用返回的函数时都重新实例化它
var hi = (function() {
var hello = "Hello world";
return function() {
return hello;
}
}());
hi(); // "Hello world";
但是,这可能会因运行的解释器/JIT编译器而异。他们的一些优化可以优化您的代码,使其不会每次都重新实例化
hello
变量会被重新创建三次吗
是的,当然。(除非通过完全优化)
或者“hello world”值是否每次都存储在内存中的相同位置
现在这是一个不同的东西-字符串值。由于字符串是不可变的,并且不同内存位置中相同值之间的差异是不可观察的,因此我们不看实现就无法知道。有关该问题,请参见(提示:是的,它们是内存有效的)
hello
变量会被重新创建三次吗
是的,当然。(除非通过完全优化)
或者“hello world”值是否每次都存储在内存中的相同位置
现在这是一个不同的东西-字符串值。由于字符串是不可变的,并且不同内存位置中相同值之间的差异是不可观察的,因此我们不看实现就无法知道。关于这个问题,请参见(提示:是的,它们是内存高效的)。我认为您必须参考特定JS引擎实现的规范。我认为您必须参考特定JS引擎实现的规范。