Javascript" for"句法

时间:2013-04-05 13:31:09

标签: javascript

所以在this question我询问了一些Javascript是如何被压缩的。问题得到了解答,以下片段让我非常困惑,以至于我不得不提出另一个问题。这是:

for (Y = 0; $ = 'zxqj`_^ZWVUQONMKJIHGCA@8$  ' [Y++];) 
     with(_.split($)) _ = join(pop());
eval(_) 

这种语法来自哪里?我有点理解第三个操作是什么([Y++]),但为什么它在括号中为什么在它之前没有任何分号?另外,在第2行:我认为_是一个被声明的变量,但是with(_.split($))是什么类型的变量类型?

1 个答案:

答案 0 :(得分:2)

任何for命令都可以分解。从“经典”循环开始:

for( i=0; i<end; i++)

这转换为:

  • 设置i=0
  • 只要i<end重复以下内容:
    • 运行块中的代码
    • 增量i

所以,将相同的代码应用到您的代码中:

  • 设置Y=0
  • 只要字符串位置Y中的字符存在(即Y不超过字符串的长度),将该字符分配给$,然后递增Y,然后:
    • 运行块中的代码
    • 什么都不做(第二个分号后没有任何内容)

这很难看,但如果你把它分解,它仍然有意义。