If the operator is in function

I am trying to add an if to my function, but it does not work. (All variables are already declared in my full code.)

Here is the source code:

 function processCheckout() { //static paypal request arguments var pp_settings = { cmd: '_cart', upload: 1, no_note: 0, bn: 'JQPayPalShop_ShoppingCart_EC_US', tax: 0, rm: 2, custom: '' }; //copy settings.paypal to pp_settings $.extend(pp_settings, settings.paypal); //create form for POST request var form = $('<form />'); form.attr('action', 'https://www.paypal.com/cgi-bin/webscr'); form.attr('method', 'post'); form.attr('target', '_blank'); //add paypal variables var arg; for (var key in pp_settings) { arg = $('<input type="hidden" />'); arg.attr('name', key); arg.attr('value', pp_settings[key]); //add to form form.append(arg); } //now process items in cart var item_index = 0; //properties map for 'cart' to the paypal variables var map = { name: 'item_name', quantity: 'quantity', checkout_price: 'amount', shipping: 'shipping', number: 'item_number', handling: 'handling' }; for (var g in cart) { //group for (var i in cart[g]) { //item if (i == 'length') continue; //skip length property item_index++; //process item for (var k in map) { arg = $('<input type="hidden" />'); arg.attr('name', map[k] + '_' + item_index); arg.attr('value', cart[g][i][k]); form.append(arg); } } } //add form to the document shop.append(form); form.submit(); //remove form shop.remove(form); } 

And here is the code I tried to change:

 function processCheckout() { if (canBuy = false) { alert("False"); } else { //static paypal request arguments var pp_settings = { cmd: '_cart', upload: 1, no_note: 0, bn: 'JQPayPalShop_ShoppingCart_EC_US', tax: 0, rm: 2, custom: '' }; //copy settings.paypal to pp_settings $.extend(pp_settings, settings.paypal); //create form for POST request var form = $('<form />'); form.attr('action', 'https://www.paypal.com/cgi-bin/webscr'); form.attr('method', 'post'); form.attr('target', '_blank'); //add paypal variables var arg; for (var key in pp_settings) { arg = $('<input type="hidden" />'); arg.attr('name', key); arg.attr('value', pp_settings[key]); //add to form form.append(arg); } //now process items in cart var item_index = 0; //properties map for 'cart' to the paypal variables var map = { name: 'item_name', quantity: 'quantity', checkout_price: 'amount', shipping: 'shipping', number: 'item_number', handling: 'handling' }; for (var g in cart) { //group for (var i in cart[g]) { //item if (i == 'length') continue; //skip length property item_index++; //process item for (var k in map) { arg = $('<input type="hidden" />'); arg.attr('name', map[k] + '_' + item_index); arg.attr('value', cart[g][i][k]); form.append(arg); } } } //add form to the document shop.append(form); form.submit(); //remove form shop.remove(form); } } 

I want the whole function to work only if the canBuy variable is true , else, alert("False") .

+4
source share
5 answers
 // WRONG if (canBuy = false) // GOOD if (canBuy == false) // BETTER if (!canBuy) 
+8
source

The new if should use == (comparison) instead of = (assignment)

 if (canBuy = false) 

Change to...

 if (canBuy == false) 
+6
source

Change if (canBuy = false) to if (canBuy == false)

You are missing an extra equal sign.

+3
source
 if (canBuy = false) 

fulfills the assignment, it should be == for comparison

 if (canBuy == false) 
+2
source

Assuming that canBuy declared somewhere that the processCheckout function can see it, change the original comparison to == or === or go from if (!canBuy) { or if (canBuy) { (depending on how you like your logic to read).

 //Assignment if (canBuy = false) {...}; //assignment, won't work. //Coerced comparison if (canBuy == false) {...} //this would work //Non-coerced compparison if (canBuy === false) {...} //if canBuy is an actual boolean, this would work //Also (in the category of "is more readable"...) if (!canBuy) { //this would work //... } if (canBuy) { //as would this //... } 
+2
source

All Articles