变量变成另一个变量变得“未定义”

Variable into another variable getting “undefined”

在此代码中,变量 "link" 给出 "undefined"。我不知道是什么原因。这是我的代码:

HTML,第一次尝试:

<html>
    <head>
                <meta charset="utf-8" />
        <script src="js.js"></script>
        <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    </head>
    <body>
        <p><a onclick="doSom()">Click here!</a></p>
    </body>
</html>

JavaScript(带 jQuery),第一次尝试:

var link;
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(){
    link="http://www.google.com";
    $('p').html(testing);
}

HTML,第二次尝试:

<html>
    <head>
        <meta charset="utf-8" />
        <script src="js.js"></script>
        <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    </head>
    <body>
        <p><a onclick="doSom('www.google.com.br')">Click here!</a></p>
    </body>
</html>

JavaScript(带 jQuery),第二次尝试:

var link;
var testando="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(link){
    $('p').html(testing);
}

变量 "link" 没有在上面的代码中给出它的值,仍然是 "undefined"。

这是有效的初始代码(但我正在对其进行优化):

HTML 从第一次尝试开始;

JavaScript(带 jQuery):

var link;
var testingi="Testing this <a href='";
var testingii="'>variable</a> here.";
function doSom(link){
    $('p').html(testingi+link+testingii);
}

我觉得完全没有必要为了一句话声明2个变量

您在 link 具有值之前添加它,因此未定义。之后定义字符串。

看这里:

var link;
 ----  this is empty at definition !!! var testing="Testing this <a href=\""+link+"\">variable</a> here.";
 function doSom(){
 link="http://www.google.com";
$('p').html(testing);
}

这样做:

var link;
var testing;
function doSom(){
link="http://www.google.com";
testing ="Testing this <a href=\""+link+"\">variable</a> here.";
$('p').html(testing);
}

您的问题归结为您在 初始化 [=20= 之前尝试 使用 link 变量]它。

var link; // By default, this is `undefined`
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
// Your `testing` link will now contain the string `undefined`
function doSom(){
    link="http://www.google.com";
    // Since you don't update `testing` it still has "undefined" in it somewhere
    $('p').html(testing);
}

解决方案:等到 testing link 初始化 link 变量后再构建。

对于您的代码 "tentativa 1",link 未定义的原因是您在为 link 赋值之前将其插入到字符串测试中。

改变

var link;
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
function doSom(){
    link="http://www.google.com";
    $('p').html(testing);
}

var link;
function doSom(){
    link="http://www.google.com";
var testing="Testing this <a href=\""+link+"\">variable</a> here.";
    $('p').html(testing);
}

它会起作用。

与“第二次尝试”相同。移动您的字符串定义以进行测试(并将其重命名为正确),它应该可以正常工作。

我猜 "JavaScript (w/ jQuery):" 没问题。

你是对的,不过,你不需要定义那些变量。这不是它在最后一个例子中正常工作的原因。这是因为你在定义后引用'link'。

更好的方法(避免定义无用的变量并在定义后引用 'link' 是将您的 html 赋值更改为如下所示:

    link="http://www.google.com";
    $('p').html("Testing this <a href=\""+link+"\">variable</a> here.");

您的主要收获应该是将变量放入字符串中不会保留对该变量的引用。变量在包含到字符串中时的值是最终值。在为它赋值之前,不得将其包含在最终的字符串赋值中。