javascript 函数体内的未定义花括号表示什么意思


function aa(){
    console.log(11)

  // 注意
    {

        console.log(222)
    }

  // 注意
    {
        {
            console.log(333)
        }
    }

}

aa()

输出

VM432:4 11
VM432:8 222
VM432:14 333

这段代码在浏览器控制台执行成功了,上面代码的中的花括号表示什么意思,为什么不按照下面的代码书写?


function aa(){
    console.log(11)
    console.log(222)
    console.log(333)
}

aa()

VM502:2 11
VM502:3 222
VM502:4 333

问题

那里面的花括号 ( { } ) 表示什么意思呢?

1、输出与上面一致的结果,这样还能节省代码行数以及简单明了,这样写的实际意义在哪里呢?
2、如果没什么意思的话,那为什么不按照下面的代码写呢?

{}是块标识符,用来划分变量的作用域和声明周期

花括号就是代码片段,划分层级的,不管是否归属某个定义,他都是说明代码片段的,很正常

  • 这篇博客: JS奇淫技巧:一行赋值语句,能玩出多少花样?中的 第七种变化、混淆加密: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 将上面的JS代码用JShaman进行混淆加密:

     

    得么混淆加密的JS代码,这时数值也被加密:

    /*Obfuscated by JShaman.com*/

    var a=0x2c0f8^0x2c0f9;

    var b=['a','=',0xe3b2c^0xe3b2e,'constructor'];

    [][b[0xa8ddf^0xa8ddc]][b[0xb3a35^0xb3a36]](b[0x3333f^0x3333f]+b[0x84d18^0x84d19]+b[0x50958^0x5095a])();

    console['log'](a);

     

    玩这些花样有什么用处吗?

    当然是有的,最后得到的代码,完全看不出是在执行a=2,赋值操作被隐藏了:

     

    当需要对代码进行加密,防止被他人任意阅读时,这是很有用的方法。

    你还有什么新奇的写法吗,欢迎探讨交流。