Tengo un fn que crea y completa la variable linkedinInsight cuando se invoca.
Solo una descripción general rápida de este fn, verificará los datos de respuesta y verá si hay una coincidencia. En caso afirmativo, completaría la variable linkedinInight con los datos.
Usando la operación ternaria, no puedo mostrar "indefinido" cuando la variable no está definida. linkedinInsight === undefined ? "undefined" : "Variable exist"
Sin embargo, si fn obtiene una coincidencia, podría ver que se muestra "Variable exist" .
En el caso de que la variable no esté undefined , desde la consola, se muestra
Error handling response: TypeError: Cannot read properties of undefined (reading 'insight_tags') at chrome-extension://fpncfpgjnkfnlafmojhhpgophpgikaao/popup.js:13:60El objetivo aquí es presentar los datos y si no pudimos encontrar datos, me gustaría devolver un "Mensaje de datos no encontrados".
¿Alguna ayuda chicos?
document.addEventListener( "DOMContentLoaded", function () { var checkPageButton = document.getElementById("clickIt"); checkPageButton.addEventListener( "click", function () { chrome.tabs.getSelected(null, function (tab) { const backgroundPage = chrome.extension.getBackgroundPage(); const linkedinInsight = backgroundPage["_linkedin_pixel_data"][tab.id].insight_tags; alert( linkedinInsight === undefined ? "undefined" : "Variable exist" );El problema está en la línea de abajo, reemplace
const linkedinInsight = backgroundPage["_linkedin_pixel_data"][tab.id].insight_tags;con
const linkedinInsight = (backgroundPage && backgroundPage["_linkedin_pixel_data"] && backgroundPage["_linkedin_pixel_data"][tab.id] && backgroundPage["_linkedin_pixel_data"][tab.id].insight_tags) || undefined;O si se admite el encadenamiento opcional
const linkedinInsight = backgroundPage?.["_linkedin_pixel_data"]?.[tab.id]?.insight_tags;Usar un operador coalescente nulo
let exists = value ?? `${value} doesn't exist`; Si el value no está undefined o es null , devuelva el valor en el lado derecho del operador ??
function check(X) { let present = X ?? `"X" does not exist`; let limit = X < 10 && X > 0 ? `"X" is within range` : `"X" is out of range`; if (typeof present == 'string') { console.log(present); return; } console.log(limit); } check(5); check(10); check(-1); check(); check(null);