相关疑难解决方法(0)

为什么函数语句需要一个名字?

为什么我可以写

 var foo = function(){}();
Run Code Online (Sandbox Code Playgroud)

但不能

 function(){}();
Run Code Online (Sandbox Code Playgroud)

有任何设计原因吗?

javascript

21
推荐指数
2
解决办法
3万
查看次数

何时调用函数vs function()in on on?

我对何时调用react组件中的函数有疑问.有时我的代码会在我没有将括号添加到函数调用时中断,但并非总是如此.我在这里缺少某种规则吗?

不行

// Callback of parent component
<Link onClick={this.props.OnNavigate}>
    A link
</Link>
Run Code Online (Sandbox Code Playgroud)

有用吗

// Callback of parent component
<Link onClick={this.props.OnNavigate()}>
    A link
</Link>

// Callback for function of component
<li onClick={this.toggleDepartments}>other example</li>
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

10
推荐指数
1
解决办法
2066
查看次数

何时使用带有javascript函数的括号

我有一个函数调用showText()它将一些文本从表单文本框复制到其他地方的段落.它被调用如下:

document.getElementById("mybutton").onclick = showText; 
Run Code Online (Sandbox Code Playgroud)

如果我将()添加到showText的末尾,它将无法工作,我从阅读中了解到类似的答案,这是调用函数的唯一方法.

稍后在脚本中它需要()工作:

window.addEventListener("keypress", function(e) {
    var keycode = e.keyCode;
    if (keycode == 13) {
        showText();
    }
}, false);
Run Code Online (Sandbox Code Playgroud)

我不确定这里发生了什么.

javascript

5
推荐指数
1
解决办法
2152
查看次数

无法从书中了解这些例子javascript,好的部分

我正在阅读javascript:Douglas Crockford的优点.我很难理解一个特定的例子和作者提供的解释.

例1 :(第38页)

var quo=function (status) {
    return {
        get_status:function() {
           return status;
       }
    };
};

var myQuo=quo("amazed");
document.writeln(myQuo.get_status());
Run Code Online (Sandbox Code Playgroud)

书中的解释(我不明白这一点.请解释这一部分):

这个quo函数被设计为在没有前缀的情况下使用,因此名称不是大写的.当我们调用quo时,它返回一个包含get_status方法的新对象.对该对象的引用存储在myQuo中.即使quo已经返回,get_status方法仍然具有对quo的status属性的特权访问权限.get_status无权访问参数的副本.它可以访问参数本身.这是可能的,因为该函数可以访问创建它的上下文.这叫做封闭.

例2(第39页):

//make a function that assigns event handler function to array of nodes
//when you click on a node, an alert box will display the ordinal of the node

var add_the_handlers=function (nodes) {
    var helper=function(i) {
        return function(e) {
            alert(i);
        }
    };
    var i;
    for (i=0;i<nodes.length;i++) {
        nodes[i].onclick=helper(i);
    }
};
Run Code Online (Sandbox Code Playgroud)

我很难理解这段代码是如何工作的,而且函数(e)是做什么的?为什么辅助函数返回函数反过来又不返回任何东西.这让我非常困惑.如果有人能用简单的语言解释,那将会非常有帮助.非常感谢

EDIT:
According to …
Run Code Online (Sandbox Code Playgroud)

javascript function object

2
推荐指数
1
解决办法
227
查看次数

用括号调用JS函数

为了我个人的改进,我在JS中摆弄了闭包和功能,当我发现这种行为让我感到非常困惑.

使用此函数,将其分配给变量,并通过jQuery从两个不同的HTML元素中调用它:

var print = function(){
console.log("Hello" );
};    

document.getElementById('element1').onclick = print();
document.getElementById('element1').onclick = print;
Run Code Online (Sandbox Code Playgroud)

为什么地球上的第二个元素,如果点击,是正确打印"你好"的元素?
我一直认为你需要在函数名称后面加上括号来调用它.

事实上,如果我只是自己调用函数(而不是通过jQuery事件),它按预期工作:

var print = function(){
console.log("Hello" );
};    
print; //does nothing
print() //prints "Hello"
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?是与jQuery相关的东西吗?提前致谢!

javascript jquery function

2
推荐指数
1
解决办法
1064
查看次数

将命名函数用作jQuery ajax成功回调时需要括号吗?

如果我有一个较早定义的函数,则在指定将其用于成功回调时是否需要包括括号?

如果我这样做有什么区别?

function fish_food(){//do something}

$.ajax({
    url: '/',
    success: fish_food
});
Run Code Online (Sandbox Code Playgroud)

要么

$.ajax({
    url: '/',
    success: fish_food()
});
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery

1
推荐指数
1
解决办法
464
查看次数

有谁可以请解释这个JavaScript代码中发生了什么?

我希望浏览器显示自上次刷新以来的秒数.我不明白为什么Code 1不起作用; 守则2; 如果代码1不起作用,为什么代码3有效?该setInterval呼叫是在码1和码3的方式类似定义的函数是不同的.但我不清楚为什么会有所作为.

非常感谢您的帮助.我刚开始学习JavaScript.

代码1

<html>
<head>
    <title>Time Since Refresh</title>
</head>
<body>
<br/>
<br/>
<span id="timeSinceStart"></span>

<script language="JavaScript">
    var timeRefreshed = new Date();
    function displayTimeSinceStart(){
        var now = new Date();
        //compute elapsed time
        var elapsed = Math.round((now - timeRefreshed)/1000);
        document.getElementById("timeSinceStart").innerHTML = "Time Elapsed: " + elapsed + " seconds."; 
    }

    // Update seconds counter
    setInterval(displayTimeSinceStart(), 1000);

</script>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

代码2 与CODE 1相同,但setInterval()函数写为

setInterval("displayTimeSinceStart();", 1000);
Run Code Online (Sandbox Code Playgroud)

代码3

<html>
<head>
    <title>Time Since Refresh</title>
</head>
<body>
<br/>
<br/>
<span …
Run Code Online (Sandbox Code Playgroud)

javascript

0
推荐指数
1
解决办法
95
查看次数

标签 统计

javascript ×7

function ×2

jquery ×2

ajax ×1

object ×1

reactjs ×1