《javascript设计模式与开发实践中》 单例模式有一段代码如下
var createLoginDiv = (function () {
var div
return function () {
if (!div) {
div = document.createElement('div')
div.innerHTML = '我是登录框'
div.style.display = 'none'
document.body.appendChild(div)
}
return div
}
})()
document.querySelector('#btn').onclick = () => {
var loginLayer = createLoginDiv()
loginLayer.style.display = 'block'
}
1.页面初始化的时候dom节点为什么没有被创建?
2.为什么执行createLoginDiv()这个函数会创建登录框呢?
页面初始化的时候,创建div的函数没有被调用,在按钮点击的时候才会被调用。
createLoginDiv()这个函数是真正创建登录框和div的函数,所以执行后就创建了。
你的代码用到了闭包,关于闭包,可以参考我以前学习闭包整理的文章:闭包整理