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'
我从面试练习本中读了这个问题,但我不明白其背后的原因,有人可以帮助我吗?
答案 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语句),然后键值对就没有意义了。