什么"(\'' +元素+' \')"意思?

时间:2016-05-05 02:16:38

标签: javascript expression

function expand(element) {
    var target = document.getElementById(element);
    var h = target.offsetHeight;
    var sh = target.scrollHeight;
    var loopTimer = setTimeout('expand(\'' + element + '\')', 10);
    if (h < sh) {
        h += 1;
    } else {
        clearTimeout(loopTimer);
        alert("伸縮完成");
    }
    target.style.height = h + "px"
}

3 个答案:

答案 0 :(得分:3)

\''的转义字符,所以这样做是建立一个可以作为函数使用的字符串,它包含一个参数,该参数包含在单引号中...

'expand(\''

以上部分&#34;打开&#34;字符串,将expand(应用为文字,然后应用转义',然后再使用'来关闭字符串的该部分。所以,回报就是:

expand('

接下来,他们连接元素变量的值:

'expand(\'' + element

字符串现在包含:

expand('elementVariableValue

接下来是打开另一个文字字符串,添加另一个单引号(转义),然后是结束括号:

'\')'

评估为:

')

把它们放在一起,你得到:

expand('elementVariableValue')

(最终将其解释为超时功能)。

现在,使用JavaScript,您可以将"'用于字符串分隔符,这样可能会更容易:

setTimeout("expand('" + element + "')", 10);

答案 1 :(得分:1)

示例中的代码是递归调用。这是一个计时器,回调是expand(element)。了解这一点,您可以轻松理解var loopTimer = setTimeout('expand(\'' + element + '\')', 10);表示对expand(element)的另一次调用。但是,函数expand需要一个字符串参数,因此它是\'' + element + '\'。最后,如果此处element等于scaleid,我们最终获得expand('scaleid'),这显然是对expand()的另一次调用。因为它是字符串,所以需要\'来逃避它。

答案 2 :(得分:-1)

在Javascript中,您可以将函数的第一个参数作为字符串传递,此字符串的计算方式就像使用eval()一样。如果你每10毫秒调用一次函数expand(&#34;某些东西&#34;)就好了。