JavaScript ECMAScript 全局函数
全局函数的用法
全局函数可以直接使用,执行结束后会将结果直接返回给调用者。
9 个全局函数
下面是最新的 ECMAScript2021 规范内规定的 9 个全局函数
- eval()
- isFinite()
- isNaN()
- parseFloat()
- parseInt()
- decodeURI()
- decodeURIComponent()
- encodeURI()
- encodeURIComponent()
最新的 ECMAScript2021 的规范里已经移除了 uneval()/escape()/unescape()
,只有上面 9 个算全局含函数;
关于全局函数的说明
这里说的全局函数,是指 ECMAScript 规范内的全局函数,全局指的是 globalThis;
在浏览器里最顶级对象是 window
,在 Nodejs 里最高输 global
。
跟多人感觉setTimeout
也算全局函数,其实按照 ES 规范里是不算的,我们一般谈论 JS 的标准,都是默认指 ECMAScript 规范的这个为标准!请切记切记!!!
如果碰到了下面的面试题
下列函数哪些是JavaScript的全局函数?
A:encodeURI
B:parseFloat
C:setTimeout
D:eval
请一定要选择ABD
,setTimeout 不属于全局函数,网上一群二货也挣得脸红脖子粗的 (https://www.nowcoder.com/questionTerminal/70716ef495734e70a6201593f7aac586), 这个问题没啥好争论的,因为无论什么观点都能找到有力的反驳证据;
最简单的就是直接打开 ECMAScript 规范来看,规范在:https://tc39.es/ecma262/#sec-function-properties-of-the-global-object
为了方便网速不好的小伙伴,我截图如下:
小伙伴们,如果以后碰到这类争论问题,直接看规范就好,按照规范回答就绝对稳!
即使面试官说你错了,你也要当场拿出 ECMAScript 规范作为你的证据,只要面试官稍微深入研究过 JavaSrit,必定都会以 ECMAScript 做为最终的标准!
如果你面试真的遇到这类场景,请一定要抓住机会,如果表现优异,完全可以吊打面试官,只要你不嘴贱,不故意嘲讽他,态度好一些,加分很大,基本就过面试了。