函数在控制台中返回未定义

时间:2020-07-22 16:20:56

标签: javascript html function console.log

我有一个带有字符串参数的函数。我本来希望在控制台中获得reff,但是由于某种原因,我却获得了undefined。这是我的代码:

var _ref;
function foo(_ref='reff') {
  var bar = _ref.bar;
  return console.log(bar);
}
foo (_ref)

为什么此日志记录undefined而不是reff

3 个答案:

答案 0 :(得分:1)

由于console.log返回了foo,因此您变得未定义,即使您修复了函数,console.log也会吐出未定义的内容,因为_ref是一个字符串而不是一个具有bar属性的对象。

因此您用foo调用_ref,该变量目前未定义,当foo函数运行时,它将设置为没有bar属性的字符串'reff' ,因此记录未定义。

因此您在两种情况下都没有定义

答案 1 :(得分:1)

好的,我将逐行解释您的代码,以帮助您了解其运行方式:

// you define a variable name _ref, its default value is `undefined`
var _ref; 

// you define a function name `foo`
// the function has one argument name `_ref` (different with the first _ref)
// this argument has a default value = 'reff'
function foo(_ref = 'reff') { // since you called `foo` with undefined value, _ref will get its default value 'reff'
  var bar = _ref.bar; // _ref is a string, so _ref.bar is undefined => bar is undefine
  return console.log(bar); // log undefined
}

// you call the function `foo` with `_ref` (it is `undefined`) 
foo(_ref)

答案 2 :(得分:0)

var _ref;
function foo(_ref='reff') {

  var bar = _ref;
return   console.log( bar);
}
foo (_ref)

请先生,附加(.bar)属性的用途是什么