javascript - JavaScript 变量的值可以在同一个函数中更改两次吗?

标签 javascript variables

不确定这是否被认为是最佳实践,或者您是否应该这样做,但我有一小块 Javascript,我想知道您是否可以声明一个变量,显示该变量,然后重新分配它并再次显示它?从语法上看,这似乎是正确的,但我认为这不是最佳实践,应该避免?

注意:我没有写这个 block ,我只是想知道它是否可以,或者我是否应该更改它并使用下面的 2 个变量代码:

var u1 = 'something';

if (u1.indexOf('Accept') > 0)
{       
var URL = 'some URL';
document.writeln(URL);
URL = 'another URL';
document.writeln(URL);
}

提前致谢。

编辑:感谢您的回答,我认为这有点愚蠢。 :/

最佳答案

是的,你可以

您可以根据需要多次更改变量的值。变量经常被重用,因此我们可以节省内存资源。不是按照您使用它们的方式(因为这是一个在调用函数时直接提供常量字符串会更好的示例),而是考虑一个日常示例,其中我们甚至不考虑多个变量值分配。 for 循环:

for (var i = 0; i < 100; i++)
{
    ...
}

在此循环中,变量 i 被分配新值 101 次。这是一个相当明显的例子,我们根本没有想到这一点,但除此之外,我们可以有一组循环并更明确地重用同一变量并多次为其赋值,例如:

var counter = 0;
for(var item = GetLinkedListFirstItem(); item != null; item = item.Next)
{
    counter++;
}
// other code...
counter = 0;
while (counter < 10 || someOtherCondition)
{
    // do something else
}

这可能是显式变量可重用性的一个更好的示例,其中它的值出于不同的目的而多次更改。

变量命名

变量重用有时是不需要的/不受欢迎的。这时我们就有了一个有意义的变量名称,例如 isUserLoggedIn。很难将此类变量重用于其他目的,因为它会使代码难以维护。

因此,通常重用的变量可能是迭代器(即i)或通常命名的变量,但没有太多含义。或者具有更通用名称的变量(即finished),可以在与此类变量名称关联的不同上下文中重用。

异步代码

在某些情况下,即使查看代码看起来完全没问题,您也可能会遇到问题。这就是当您使用异步函数时,这在使用 Ajax 调用或延时调用(即 setTimeout)时经常出现。考虑以下代码:

var loaded = false;

$.ajax({
    url: "...",
    type: "POST",
    success: function(){
        loaded = true;
    }
});

if (loaded === true)
{
    // do something important
}

// ok loaded not used any more, so we can reuse it
// we can easily change its type from number to string or anything else
loaded = "Peter loaded his gun";

这段代码有一个错误,因为重要代码不会被执行。曾经!这是不了解异步的不精明的开发人员经常产生的误解。

Hint: When code issues an Ajax call it doesn't wait for a response but rather continues execution and executes if statement. Even though Ajax call would respond in 0time ticks, success function wouldn't execute until this currently running code wouldn't finish execution. That's how Javascript works. Queued code execution. In the end when Ajax async code would execute it would eventually overwrite the string that was stored in the variable.

关于javascript - JavaScript 变量的值可以在同一个函数中更改两次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260185/

相关文章:

javascript - 使用 jQuery 插入 HTML

javascript - 应用过渡时的 D3js 排序问题

javascript - 为什么我的货币换算 javascript 程序无法运行?

javascript - 无法正确绑定(bind) observables 的 observableArray

javascript - html 和 JavaScript : multiple checkboxes run same function for multiple textboxes

java - 如何将 TextView 设置为长值?

PHP在另一个类中访问类

c# - 将字符串变量值转换为文字

javascript - 工具提示中的属性/变量被忽略

c - 是否可以从 C 访问程序集中定义的变量?