我正在尝试为学习目的构建一个购物车。我有以下代码:
HTML
JavaScript
这段代码抛出以下错误:
未捕获的类型错误:无法设置未定义的“createCart”属性。
在花费了几个小时在互联网上查找并跟随一些教程后,我对代码进行了以下更改,然后它开始工作了。
但是我仍然不明白我在这里做了什么。
可以有人解释一下在将`cart || {}`表达式传递到匿名函数中后,为什么代码开始工作了吗?详细的解释会非常好。 :)
这段英文的意思是:请问有人能够解释一下,在将`cart || {}`表达式传递到匿名函数中后,为什么代码开始工作了?希望能提供详细的解释。
HTML
<div id="MyCart" class="product-cart">
<ul>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
</ul>
</div>
JavaScript
var cart = (function () {
cart.createCart = function (cartId) {
console.log(cartId);
cartId = document.getElementById(cartId);
}
return cart;
}());
var shoopingCart = cart.createCart("MyCart");
这段代码抛出以下错误:
未捕获的类型错误:无法设置未定义的“createCart”属性。
在花费了几个小时在互联网上查找并跟随一些教程后,我对代码进行了以下更改,然后它开始工作了。
但是我仍然不明白我在这里做了什么。
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 || {}`表达式传递到匿名函数中后,为什么代码开始工作了?希望能提供详细的解释。
cart
作为参数,如果不传入cart || {}
,则相当于未传入任何参数,因此cart
将是未定义的。请记住,IIFE具有完全隔离的作用域。 (注:IIFE指立即调用的函数表达式) - Callum Linington