在JavaScript内存消耗之间是否有任何特定的优势/劣势使用location.href = url
而不是location.assign(url)
?
我想我想知道是否需要更多的内存来访问该方法而不是设置属性.
Tob*_*ogh 28
我总是使用,从来没有遇到过问题:
location.href = url;
Run Code Online (Sandbox Code Playgroud)
调用函数应该比访问属性稍慢,但就内存而言,我的拙见不应该有很大的不同
kie*_*ill 16
我知道这已经过时了,但是当我正在寻找一种方法来检查我的单元测试是否重定向到正确的URL时,我偶然发现了这一点.
window.location.assign()
如果你更关心测试,我会选择.使用函数可以模拟所述函数并检查url输入参数.
所以,使用jest:
window.location.assign = jest.fn();
myUrlUpdateFunction();
expect(window.location.assign).toBeCalledWith('http://my.url');
// Clean up :)
window.location.assign.mockRestore();
Run Code Online (Sandbox Code Playgroud)
使用location.href = url而不是location.assign(url)之间的JavaScript内存消耗是否有任何特殊优势/劣势?
没有差别.
这样做的原因是简单的.每次浏览器加载新页面时,它都会启动一个全新的Javascript"VM",其中该页面的脚本在该VM中运行.在运行问题中的任何一个语句时,您指示浏览器加载新页面,这意味着销毁当前VM(并释放与其关联的任何内存)并为新页面加载全新VM.
除了任何奇怪的浏览器错误,净效果总是相同的.您的脚本在具有完全相同内存消耗的全新VM中运行.
如果您正在浏览器中使用位置对象,并且希望能够在Node JS上运行此代码(例如,用于测试或等距代码),则可以使用ulocation
Location对象的通用/等距实现.完全披露:我是该软件包的作者.
实际上我认为是有区别的
归档时间: |
|
查看次数: |
38409 次 |
最近记录: |