从函数输出读取属性

时间:2018-07-15 19:50:27

标签: javascript

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: cellid, for: indexPath) as! listTableViewCell
    cell.testlabel.text = "\(durationTime[indexPath.row])"
    cell.animationDuration = Double(durationTime[indexPath.row])

    return cell
}

控制台将输出

  

未捕获的TypeError:无法读取未定义的属性'fullName'

我从面试练习本中读了这个问题,但我不明白其背后的原因,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

这里的问题是return语句后自动插入分号。

您不能将代码放在return语句之后的新行中,因为javascript会自动将;与return语句放置在同一行中,而其余代码将被忽略。

(function(){
  function sayHello() {
    var name = "Hi John";
    return { fullName: name };
  }

  console.log(sayHello().fullName);
})();

答案 1 :(得分:1)

由于 A 自动 S 分号 I 插入,解析器会将您的代码读取为:

return  ; // <---
{
  fullName: name
}

因此它实际上不返回任何内容,在javascript中为undefined

顺便说一句:以下对象文字也变得无效,因为它不再是表达式而是语句( block语句),然后键值对就没有意义了。

相关问题