我正在尝试构建用于学习目的的购物车。我有以下代码使用自我调用匿名函数
HTML
<div id="MyCart" class="product-cart">
<ul>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
</ul>
</div>
JS
var cart = (function() {
cart.createCart = function (cartId) {
console.log(cartId);
cartId = document.getElementById(cartId);
}
return cart;
}());
var shoopingCart = cart.createCart("MyCart");
但这个代码抛出以下错误
Uncaught TypeError: Cannot set property 'createCart' of undefined
在网上花费几个小时后遵循一些教程,我做了下面的代码更改,然后开始工作。
但我依然不明白我在这里做
var cart = (function (cart) {
cart.createCart = function (cartId) {
console.log(cartId);
cartId = document.getElementById(cartId);
}
return cart;
}(cart || {}));
var shoopingCart = cart.createCart("MyCart");
能有人请解释我为什么代码开始传递cart || {}
表达到匿名函数后,开始工作?一些详细的解释会很好。 :)
车在cart.createCart不确定的。您应该使用外部购物车功能。 –
函数期待'cart'作为参数,而不会传递'cart || {}'你没有任何东西,所以'cart'将会是未定义的。请记住,IIFE有一个完全隔离的范围 –