dentro de mi archivo ./functions/login_registration_functions.js
Tengo el siguiente código
var methods = { check_if_not_null: function (item_to_be_checked, item_to_store_the_checked_item) { if(item_to_be_checked != null){ item_to_store_the_checked_item = item_to_be_checked; } } }; module.exports = methods; y lo estoy llamando dentro de mi archivo routes.js
var log_reg_funcs = require('./functions/login_registration_functions.js'); y estoy llamando al método dentro de mi llamada put
log_reg_funcs.check_if_not_null(req.body.title, request.title);pero no funciona cuando reemplazo el código anterior con el siguiente:
if(req.body.title != null){ request.title = req.body.title; }funciona bien
¿Por qué me estoy perdiendo aquí?
Cuando estás haciendo esto:
item_to_store_the_checked_item = item_to_be_checked; cuando item_to_store_the_checked_item es el argumento de su función, entonces no está cambiando la variable original que se usó al llamar a su función, sino solo su copia local del valor pasado que está en su función.
Si pasó y objetó y cambió una de sus propiedades, entonces funcionaría como esperaba.
Por ejemplo si tuvieras:
var methods = { check_if_not_null: function (item_to_be_checked, object_to_store, object_key) { if(item_to_be_checked != null){ object_to_store[object_key] = item_to_be_checked; } } };entonces serías capaz de hacer:
log_reg_funcs.check_if_not_null(req.body.title, request, 'title');(es extraño que JavaScript use guiones bajos en lugar de camelcase, pero mantendré tu estilo aquí)