偷偷告诉你一个秘密,JS没能力输出 “Hello World”!!!

1,461 阅读2分钟

点进来的前端佬兄弟冷静冷静,先别喷,看完再喷,好吗?

as.gif

事情的起因是和同事一起聊天,互相吹皮各自主用的编程语言一些缺陷时,然后话题又转到哪个语言写“Hello World”字符最少。

其中一后端同事说了句:“C(语言)写个hello world最麻烦吧,还得加个main函数...”然后我这边想了想,说:“这个还好,用JS(Javascript),连输出个'Hello World' 都写不了”。

有经验的前端大佬可能在这里只想输出,不想再看了。

周星驰-骂人.gif

"console.log('Hello World')这个你都不会吗?"

呃呃...没有错的,这个不管在浏览器中的输出面板还是在node中的终端面板中,都能准确输出。

但是,但是,但是,console这个函数,并不是是ECMAScript的标准哦!

虽然console有自己的标准(参考网站console.spec.whatwg.org)。

虽然浏览器和node对其有很好的实现。

但是,还是得说但是,这只是JS宿主所提供的能力。

98b9a8d586cc43f2a6248b86dab2de2b.gif

可能有些大佬又想起了alert('Hello World'),如下图:

image.png

但还是遗憾。

这玩意完整调用,是window.alert('Hello World')

依稀记得,之前这种的和上面这种的,是有个笼统的约定词语(并非标准),叫做BOM(浏览器对象模型),当然了,看名字就知道,只是针对浏览器的。

以前在开发兼容IE6/7/8浏览器的时候,没少用这个玩意。因为console那个时候并没有在老版浏览器中得到实现。

as.gif

当然,还有更细心的大佬,会说出**document.write('Hello World')、document.getElementsByTagName("body")[0].innerText = 'Hello World' 、 document.xxxx**等等.

这些,依旧还不是哦!

document开头的这些,算是DOM(文档对象模型)所提供的能力。我们用来操作DOM树。还附加了一些操作CSS的API。

所以,看到这里的各位大佬,我想告诉你:

JavaScript 没有任何打印或者输出的函数!!!

至于为什么标准不加这个输出函数上去,可能是脚本语言的特性或者发展到现在,根本就不需要了?还请各位赐教。如果后期挖掘到什么这类的八卦内幕,还会在这里分享给大家!

5.gif