2017-01-26 2 views
0

Я следующий код Javascriptвызов функции с новым оператором, не возвращающим значение?

var foo = function(a, b) { 
 
     var sumn; 
 
     sumn = a + b; 
 
     return sumn; 
 
    } 
 
    
 
    var k = new foo(2, 3); 
 

 
    console.log(k);

это не возвращает значение в виде суммы? для чего это решение?

+1

Не используйте 'new'? –

+0

'New' создает новый объект, используя для этого прототип foo. Вы пытаетесь вызвать функцию? если это так, не используйте новый просто код 'var k = foo (2,3);' –

+0

@DIEGOCARRASCAL: 'foo' не является прототипом. Это конструктор. У него может быть прототип, присвоенный 'foo.prototype', но в этом случае он не наследует его непосредственно из' Object' – slebetman

ответ

2

Вам необходимо сохранить ссылку на объект, созданный с this

var foo = function(a,b){ 
    this.sumn = a+b; 
} 
var k = new foo(2,3); 
console.log(k); // > foo {sumn: 5} 
console.log(k.sumn); 
3

Вам не нужно использовать ключевое слово new.

Новый код:

var foo = function(a,b){ 
    var sumn; 
    sumn = a+b; 
    return sumn; 
} 
var k = foo(2,3); 

new ключевое слово используется для создания новых экземпляров объектов. Вы можете узнать больше об этом здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new

1

Вам не нужно новое для вызова функции.

var foo = function(a,b){ 
    var sumn; 
    sumn = a+b; 
    return sumn; 
} 
var k = foo(2,3); 
console.log(k); 
1

Приведенный ниже пример вызывает функцию, выполняет добавление и возвращает значение. Вам не нужно «Новый» ключевое слово

Согласно ниже примере выход 7.

<!DOCTYPE html> 
<html> 
<body> 




<p id="demo"></p> 

<script> 
function foo(a,b) { 
    return a+b; 
} 
document.getElementById("demo").innerHTML = foo(4, 3); 



</script> 

</body> 
</html> 
Смежные вопросы