javascript:未定义变量与未定义函数

8位博尔赫斯

我有两个数组:

array1 = ["one", "two"];
array2 = ["two", "four"]; 

如果我写:

var inetersection = array1.filter(function(n){
    return array2.indexOf(n) != -1 
 });

我得到正确的答案:“两个”。

但是如果我写一个函数:

function intersection (array1, array2){
   array1.filter(function(n){
   return array2.indexOf(n) != -1
   });
}

然后console.log(intersection(array1, array2));返回undefined

第二种语法有什么问题?

下山羊

您的函数不返回任何内容。您如何解决它:

function intersection (array1, array2){
   return array1.filter(function(n){
       return array2.indexOf(n) != -1
   });
}

为什么?

因此,变量具有一个值,让我们从此开始:

var hello_world = "Hello World!";

这样做是将的值设置hello_world"Hello World!"这很简单。


解释!

现在让我们尝试使用一个函数。

function addNumbers (number_1, number_2) {
    number_1 + number_2;
}

现在让我们运行该功能

addNumbers(1, 2) undefined

我们为什么得到undefined让我们回到第一个示例,并在控制台中输入类似的内容

>“ Hello World!”

“你好世界!”

发生的是,当我们键入字符串时,"Hello World!"它将重新调整字符串。该规则是在JavaScript中预设的,但是当您创建自己的函数时,它不知道return其原因是什么,让我们以jQuery为例。你可以做:

var elem = $("#element");

让我们看一下第一部分。因此,有一个名为的函数$,该函数可能正在做很多事情。首先,使用来获取元素id element它将元素存储在中elem该函数可能会做很多事情,但是returning没什么。返回一些东西就是设置一个函数的值。这是两个示例:

var function_1 = function () {
    alert("Hello!");
};

var function_2 = function () {
    return function () {
        alert("Hello");
    }
}

现在,我只是在第二功能上做了什么呢?这是什么

var variable_1 = function_1();
console.log(variable_1);

undefined

variable_1未定义,但仍会发出警报。这是因为它运行了该函数,但是返回的是未定义的。所以variable_1不是功能;因为variable_1未定义。让我们来看看function_2

var variable_2 = function_2();
console.log(variable_2);
功能 () {

   alert(“ Hello”);

}
variable_2(); //Alerts "Hello!"

这也有点令人困惑,因为function_2 返回一个函数,它设置variable_2为返回的函数。这就是为什么它可以正常工作的原因。


希望有道理。这是MDN页面return

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章