你知道哪些JavaScript中让人哭笑不得的奇葩知识点吗?

2026-04-01 16:051阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2388个文字,预计阅读时间需要10分钟。

你知道哪些JavaScript中让人哭笑不得的奇葩知识点吗?

长久沙场的前辈们,留下了无数代码,踏过了无数的坑。但有些坑,可能一位子也摸不着,因为根本不会出现在业务代码里……+1 Function.prototype 确实是个函数类型。而自定义函数的原型是……

久经沙场的前辈们,写了无数代码,踩了无数的坑。但有些坑,可能一辈子也踩不到摸不着,因为根本不会发生在业务代码里~~

1

Function.prototype 竟然是个函数类型。而自定义函数的原型却是对象类型。

typeof Function.prototype === 'function'; // true function People() {} typeof People.prototype === 'object'; // true

所以我们设置空函数可以这么做:

// OK const noop = Function.prototype; // OK const noop = () => {};

2

一个变量真的会不等于自身吗?

const x = NaN; x !== x // true

这是目前为止js语言中唯一的一个不等于自己的数据。为什么?因为NaN代表的是一个范围,而不是一个具体的数值。
在早期的 isNaN() 函数中,即使传入字符串,也会返回true,这个问题已经在es6中修复。

isNaN('abc'); // true Number.isNaN('abc') // false

所以如果您想兼容旧浏览器,用 x !== x 来判断是不是NaN,是一个不错的方案。

阅读全文

本文共计2388个文字,预计阅读时间需要10分钟。

你知道哪些JavaScript中让人哭笑不得的奇葩知识点吗?

长久沙场的前辈们,留下了无数代码,踏过了无数的坑。但有些坑,可能一位子也摸不着,因为根本不会出现在业务代码里……+1 Function.prototype 确实是个函数类型。而自定义函数的原型是……

久经沙场的前辈们,写了无数代码,踩了无数的坑。但有些坑,可能一辈子也踩不到摸不着,因为根本不会发生在业务代码里~~

1

Function.prototype 竟然是个函数类型。而自定义函数的原型却是对象类型。

typeof Function.prototype === 'function'; // true function People() {} typeof People.prototype === 'object'; // true

所以我们设置空函数可以这么做:

// OK const noop = Function.prototype; // OK const noop = () => {};

2

一个变量真的会不等于自身吗?

const x = NaN; x !== x // true

这是目前为止js语言中唯一的一个不等于自己的数据。为什么?因为NaN代表的是一个范围,而不是一个具体的数值。
在早期的 isNaN() 函数中,即使传入字符串,也会返回true,这个问题已经在es6中修复。

isNaN('abc'); // true Number.isNaN('abc') // false

所以如果您想兼容旧浏览器,用 x !== x 来判断是不是NaN,是一个不错的方案。

阅读全文