我正在嘗試構建用於學習目的的購物車。我有以下代碼使用自我調用匿名函數
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有一個完全隔離的範圍 –