相关疑难解决方法(0)

为什么我应该在javascript中将函数分配给变量?

可能的重复:
JavaScript: var functionName = function() {} vs function functionName() {}
Javascript 中的函数表达式与声明之间有什么区别?

我试图了解 javascript 的“最佳实践”。

此代码来自jqfundementals.com

// create a function that will greet a person,
// and assign the function to the `greet` variable
var greet = function( person, message ) {
  var greeting = 'Hello, ' + person + '!';
  log( greeting + ' ' + message );
};

greet( 'Jory', 'Welcome to JavaScript' );
greet( 'Rebecca', 'Thanks for joining us' );
Run Code Online (Sandbox Code Playgroud)

为什么我应该将函数分配给 greet 变量?

我的第一个冲动是这样写:

function …
Run Code Online (Sandbox Code Playgroud)

javascript

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

函数表达式与函数声明:返回值

在Udacity课程中,函数表达式和声明之间的区别解释如下:

函数声明定义函数,不需要为其分配变量.它只是声明一个函数,并且本身不返回值......另一方面,函数表达式确实返回一个值.

这令人困惑; 据我所知,当函数表达式和函数声明都包含return语句时,都返回一个值.

如果我理解正确,返回值的差异在于函数表达式中,如果在函数的第一次调用中更改了值,则在后续调用中将保留更新的值 - 而如果函数未存储在变量中,当函数执行完毕时,将删除返回值.我错过了什么,并且从课程中的陈述准确吗?

注意:我的问题与标记为重复的问题不同.在那个问题中,它询问使用一个在另一个之上的原因是什么,但问题中没有提到或在答案中解释了返回值.

javascript

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

JavaScript块范围与功能

以下片段完全相同吗?如果没有什么是尊重?

var x = (function() {
    ... //a
    return function(){
        ... //b
    };
})();
Run Code Online (Sandbox Code Playgroud)

var x;
{
    ... //a
    x = function(){
        ... //b
    };
}
Run Code Online (Sandbox Code Playgroud)

javascript

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

递归| 两个函数名称

以下是Douglas Crockford的The Good Parts的代码.

在大多数情况下,代码是有道理的.除此之外,我不明白这一行:

var walk_the_DOM = function walk(node, func) {
Run Code Online (Sandbox Code Playgroud)

因为看起来这个函数有两个名字 - walk_the_dom()walk()

再往下看,你可以看到代码实际上是双向调用的,所以这两个名字实际上都引用了这个函数.

为什么这个函数有两个名字?

// Define a walk_the_DOM function that visits every
// node of the tree in HTML source order, starting
// from some given node. It invokes a function,
// passing it each node in turn. walk_the_DOM calls
// itself to process each of the child nodes.

var walk_the_DOM = function walk(node, func) {
    func(node);
    node = node.firstChild;
    while (node) {

        // walk() …
Run Code Online (Sandbox Code Playgroud)

javascript

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

如何在Javascript中定义'功能'(不是'功能')?

我碰巧注意到Javascript也支持Function关键字,就像在ActionScript中一样.由于两者都源自ECMA Script,因此存在这种相似性是常识.但我很好奇函数在Javascript的情况下代表什么,如果不是一个类(如在as3中).

在JS中,

var func = new Function(); 要么 var func = new Function;

为变量'func'指定一个名为'anonymous'的函数.

它可能只是一种以面向对象的方式实现实际"函数"的方法.

由于大多数浏览器(ff,即&chrome)似乎以相同的方式实现它,它是否在规范中得到解决?

javascript function

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

按钮控制javascripts中的功能

我一直在制作简单的Javascript程序,我将为不同的网站为我的朋友运行,我一直在尝试使用按钮制作一个统治风格(使命召唤游戏模式)程序.我看过一个网站,并尝试使用设置的间隔,但我无法弄清楚如何让按钮访问脚本.

这是我的代码:

<!DOCTYPE html>
<html>
<body>
    <p id = "blue"></p>
    <p id = "red"></p>
    <button onclick="StartA()">Start for Red</button>
    <button onclick="StopA()">Stop for red</button>
    <button onclick="StartB()">Start for Blue</button>
    <button onclick="StopB()">Stop for Blue</button>
    <script>
    var startRed;
    var startBlue;
    var r=1;
    var b=1;
    var startA = function(){
        var startRed = setInterval(function(){redscore++};,3000)
    };
    var startB = function(){
        var startBlue = setInterval(function(){bluescore++};,3000)
    };
    var StopA = function(){
        clearInterval(startRed);
    }; 
    var StopB = function() {
        clearInterval(startBlue);
    };
    document.getElementById("blue").innerHTML=bluescore;
    document.getElementById("red").innerHTML=redscore;
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript html5

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

使用命名函数表达式有什么意义?

我正在浏览这篇关于函数声明和函数表达式之间差异的博客.

它给出了这两个例子.他们将第一个称为"匿名函数表达式",将第二个称为"命名函数表达式".

// anonymous function expression
var a = function(){
   return 3;
}

// named function expression
var b = function bar(){
   return 3;
}
Run Code Online (Sandbox Code Playgroud)

我在Chrome的JS控制台中测试了这两个,我看到以下内容:

a()
=> 3

b()
=> 3

bar()
=> bar is not defined
Run Code Online (Sandbox Code Playgroud)

我的问题是:在第二个函数表达式声明中,"bar"的重点是什么?一般来说,为什么要使用命名函数表达式?

javascript function-expression

4
推荐指数
2
解决办法
584
查看次数

我应该用JavaScript挂机吗?

我正在学习JavaScript,我觉得我理解提升得体,所以我不会问它是什么,或者怎么做,或类似的东西.

提升是否好?如果可以,我应该使用声明我的变量

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

或者我应该使用它吗?

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

我什么时候应该提升,什么时候不应该?或者它甚至是否重要?

javascript hoisting hoist

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

Javascript中的命名函数在声明之前可访问,但函数文字不是

我试图弄清楚它是如何工作的.当我引用一个尚未声明的命名Javascript函数时,在某些情况下,它可以工作.但是,如果我使用函数文字,它不会,但它也不会失败ReferenceError.

function works() {
    var works_ref = foo;
    function foo() {
        console.log('ok');
    };
    console.log('works ' + works_ref);
}

function fails() {
    var fails_ref = foo;
    var foo = function() {
        console.log('ok');
    };
    console.log('fails ' + fails_ref);
}

works();
fails();
Run Code Online (Sandbox Code Playgroud)

这回来了

"works function foo() {
            console.log('ok');
        }"
"fails undefined"
Run Code Online (Sandbox Code Playgroud)

我想知道第一个例子是如何工作的 - 这是一个解释语言,没有编译,所以我希望任何类型的前向引用都会失败 - 为什么第二个例子不能生成ReferenceError

javascript function-literal

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

javascript行为 - 函数表达式与函数声明 - 差异

为什么没有为函数创建引用f

if ( function f() { } ) {
    console.log( typeof f );
}
// result: undefined 
Run Code Online (Sandbox Code Playgroud)

分配/设置变量正常工作内if( )

if ( f = 'assigned' ) {
     console.log( typeof f );
}
// result: string
Run Code Online (Sandbox Code Playgroud)

我需要知道在第一种情况下会发生什么,因为第二种情况正如预期的那样工作

有人可以解释一下吗?

javascript

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