我有一个带有字符串参数的函数。我本来希望在控制台中获得reff
,但是由于某种原因,我却获得了undefined
。这是我的代码:
var _ref;
function foo(_ref='reff') {
var bar = _ref.bar;
return console.log(bar);
}
foo (_ref)
为什么此日志记录undefined
而不是reff
?
答案 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)属性的用途是什么