以下代码给出了<div target="newsinfo">hello</div>
<div target="somethingelse">world</div>
的输出。我的印象是所有变量和函数声明都被提升到其作用域的顶部,因此undefined
现在应该在调用b
之前位于作用域的顶部。但是,我仍然得到a()
作为输出吗?
undefined
答案 0 :(得分:5)
您误解了吊装的工作原理。它不会提升赋值,而只会提升声明。您的代码等效于以下内容:
var b; // undefined
function a(){
console.log(b)
}
a();
b = 5;
答案 1 :(得分:4)
是的,已悬挂变量声明,但未在b
上设置该值。代码看起来像这样
var b
function a(){
console.log(b)
}
a()
b = 5;
答案 2 :(得分:2)
吊起意味着将在顶部“ 创建”创建变量-但是在值赋值发生的时间// MARK: CollectionView Delegate
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 2
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return imageArray.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if indexPath.section == 0 {
let firstCell = collectionView.dequeueReusableCell(withReuseIdentifier: "addusercell", for: indexPath) as! AddParticipantsCollectionViewCell
return firstCell
} else {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "userscollectionview", for: indexPath as IndexPath) as! ParticipantsCollectionViewCell
cell.imageView?.image = self.imageArray[indexPath.row]
return cell
}
}
不会发生任何变化当执行到达其编写的部分时,该部分仍然会发生。因此,如果在此之前调用b = 5
,则a()
存在,但尚未分配任何值……因此,b
答案 3 :(得分:0)
您正在使用函数声明来创建函数。因此,函数声明也被挂起,以便在声明之前使用它们。