你真的会用JS写Hello World么?

栏目: JavaScript · 发布时间: 6年前

内容简介:软件开发这个行业里面,有这么一句挺牛逼的话:“但是我有些个附加条件,嘿嘿嘿我先来做个示范,先抛开这条的附加条件,实现起来那就太简单了

软件开发这个行业里面,有这么一句挺牛逼的话:“ 人生苦短,我用Python ”,虽然 Python 我会用,也确实发自内心地觉得,在言简意赅这条路上,它配得上这句话。但今天我就想用 JavaScriptpython 叫叫板,比比更“ ”。问题只有一个: 请使用 JavaScript 语言编写一个函数,返回 hello world!

但是我有些个附加条件,嘿嘿嘿

题目 1. 每行代码不超过3个字符,总行数不超过9行

我先来做个示范,先抛开这条的附加条件,实现起来那就太简单了

function f(){
    return "hello world!"
}
复制代码

OK, 然后在控制台用console.log(f())打印就可以看到hello world!了。

当加上这个附加条件,传统的函数定义方式显然行不通了。

当然现在,ES6已经相当普及,能想到箭头函数应在情理之中。其次就是一行字符串如何写成多行,这也应该是编程基础,不绕弯子了,直接上代码:

f=(
)=>
"h\
el\
lo\
 w\
or\
ld\
!"
复制代码

涉及的JavaScript知识点: 箭头函数字符串换行

题目 2. 每行代码不超过2个字符,总行数不超过30行

每行两个字符,你是不是连函数都不会定义了,反正箭头函数是行不通了 总行数不超过30行,有点残忍,算了40行也行吧

如果只出题目和贴答案,对于各位看官来说,这也只能算是奇技淫巧。所以本着阅有所得得出发点,我还是简略剖析下我的思路,希望能给你些启发:

  1. 在每行两个字符的限时下,考虑到字符串换行符 \ 的存在,所要返回的 hello world! 字符串还是可以输出的,只不过多些几行的事,问题不大。
  2. 基于第一步中的方法,在不考虑总行数限制的情况下,其实什么字符串都是可以分拆成多行写的。但每行两个字符的限制,是把函数创建的生门堵死了。
  3. 想到JavaScript中一起皆对象,不同类型的对象都有些许内置的属性和方法,与此同时,最精妙绝伦的是,函数的调用除了用 . 符号外,还可以用数组的方式,即可以在数组符号 [] 中,写方法名的字符串进行方法的调用。可使用的方法,仅供参考: ''.trim()''.slice()[].join()
  4. 如此我们便可用些内置的函数,来代替创建新函数。可想而知,在每行两个字符的限制下,无论是箭头函数,还是 function() 什么的,都显得太过无力了。
  5. 你以为到此为止,问题就解决了么?不,你会立马遇到另一个问题——每行两个字符限制下,调用函数时怎么传参? 我只能说,ES6中有个好东西——带标签的模板字符串

不说啥了,看代码吧

f=
''
[
'\
t\
r\
i\
m'
][
'\
b\
i\
n\
d'
]`
H\
e\
l\
l\
o\
,\
 \
w\
o\
r\
l\
d!
`
复制代码

涉及的JavaScript知识点: 字符串换行trim()join()bind()模板字符串

激不激动,刺不刺激。

其实还不够,我是个有时间,就想把事情做到极致的人

握紧方向盘,系好安全带,我们继续

题目 3. 每行代码不超过1个字符,总行数不超过120行

有没有世界观快要崩塌了,是不是开始觉得,自己从来没学过真的JavaScript。 有没有不仅函数不会创建使用了,没有字符串换行符,是不是连字符串都不会写了。

好了,言归正传,

如果你想挑战一下自己,那么就请先不要继续往下阅读,直接在浏览器的Console中尝试一下。

[
,
j
,
,
o
,
,
i
,
,
n
,
,
b
,
,
d
,
,
s
,
,
p
,
,
l
,
,
t
]
=
`
j
o
i
n
b
d
s
p
l
t
`
f
=
[
]
[
j
+
o
+
i
+
n
]
[
b
+
i
+
n
+
d
]
(
`
H
e
l
l
o
,
 
w
o
r
l
d
!
`
[
s
+
p
+
l
+
i
+
t
]
`
`
,
[
]
+
[
]
)
复制代码

在问题2时,已较为详细的分析了思路,问题3问题难度虽然加大,但思路基本不变,这里为了便于理解,仅汇总一下涉及到的知识点:

  1. 模板字符串 ,可以自由换行,但换行处会有一个换行符 \n
  2. 解构赋值 ,字符串可以看成是单个字符组成的数组,由于数组的定义可以换行,通过将模板字符串解构赋值给数组,便可获得初始化为单个字符的变量。
  3. 一些字符串和数组的内置方法: join()splite()
  4. 改变函数执行上下文的方法: bind() ,同时可复习与 apply()call() 的区别和联系。
  5. 这或许算是一条奇技淫巧: []+[] 表示空字符 ''

其实我就一个想法,看过之后不要觉得这是篇讲述什么奇技淫巧的文章,倘若能帮你回顾复习了些JavaScript的基础知识,便就善莫大焉了。


以上所述就是小编给大家介绍的《你真的会用JS写Hello World么?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

網絡社會之崛起

網絡社會之崛起

曼威·柯司特 / 夏鑄九、王志弘 等 / 唐山 / 2000-11 / NT$550

本書解釋了今日重塑世界的兩股強大但相互衝突的潮流:全球化與認同。資訊科技的革命以及資本主義的再結構已經引動了網絡社會,並帶來了策略,除經濟行為的全球化、工作的彈性化與不穩定,以及真實的虛擬文化。但是,伴隨著資本主義的轉化與國家主義的消亡而來的,是集體認同的表達以火力十足的方式竄起。它們挑戰了全球化中的文化單一性以及對於生活、環境的控制。曼威.柯司特在本書中描繪了社會運動的根源、目標以及效果,包括了......一起来看看 《網絡社會之崛起》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试