TypeError: "x" is (not) "y"
JavaScript ã®ä¾å¤ "x is (not) y" ã¯ãäºæããªãåããã£ãã¨ãã«çºçãã¾ããããããã®ã¯ãäºæãã undefined ã¾ã㯠null ã®å¤ããã£ãå ´åã§ãã
ã¨ã©ã¼ã¡ãã»ã¼ã¸
TypeError: Cannot read properties of undefined (reading 'x') (V8 ãã¼ã¹) TypeError: "x" is undefined (Firefox) TypeError: "undefined" is not an object (Firefox) TypeError: undefined is not an object (evaluating 'obj.x') (Safari) TypeError: "x" is not a symbol (V8 ãã¼ã¹ & Firefox) TypeError: Symbol.keyFor requires that the first argument be a symbol (Safari)
ã¨ã©ã¼ã®ç¨®é¡
TypeError
ã¨ã©ã¼ã®åå
äºæããªãåãããã¾ããããã㯠undefined ã¾ã㯠null ã®å¤ã§ãã°ãã°çºçãã¾ãã
ã¾ããObject.create() ã Symbol.keyFor() ã®ãããªãã種ã®ã¡ã½ããã¯ãç¹å®ã®åãè¦æ±ãããããæä¾ããå¿
è¦ãããã¾ãã
ä¾
>ç¡å¹ãªå ´å
undefined ã¾ã㯠null ã®å¤æ°ã«å¯¾ãã¦ã¡ã½ãããå¼ã³åºããã¨ã¯ã§ãã¾ããã
const foo = undefined;
foo.substring(1); // TypeError: foo is undefined
const foo2 = null;
foo2.substring(1); // TypeError: foo2 is null
ãã種ã®ã¡ã½ããã§ã¯ãç¹å®ã®åãæ±ãããããã¨ãããã¾ãã
const foo = {};
Symbol.keyFor(foo); // TypeError: foo is not a symbol
const foo2 = "bar";
Object.create(foo2); // TypeError: "foo2" is not an object or null
åé¡ã®ä¿®æ£
null ãã¤ã³ã¿ã¼ã undefined ã¾ã㯠null å¤ã«ä¿®æ£ããã«ã¯ãã¾ããã®å¤ã undefined ã¾ã㯠null ã§ãããã©ãããæ¤æ»ãã¦ãã ããã
if (foo !== undefined && foo !== null) {
// ããã§ã foo ãå®ç¾©ããã¦ãããã¨ããããã®ã§ãå®è¡ãããã¨ãã§ããã
}
ãããã¯ãfoo ãä½ããã®å½å¤ï¼"" ã 0 ãªã©ï¼ã§ã¯ãªãã¨ç¢ºä¿¡ãã¦ããå ´åããããã¯ããããå ´åãé¤å¤ãã¦ãåé¡ã«ãªããªãå ´åã¯ãåç´ã«çå¤ã§ãããã©ãããæ¤æ»ããã ãã§æ¸ã¿ã¾ãã
if (foo) {
// foo ã¯çå¤ã§ãããã¨ãåããã®ã§ããããã null/undefined ã§ã¯ãªãã
}