var temp=6;var i=5;i- -;temp=temp-i;求temp的值

最近看到一个有意思的函数

Utils.VALUE是一個常量其值为"value"。暂时没有找到官方说明为什么要对value属性做特殊处理猜测是很多注解只有一个属性,为了编程方便因为不需要@A(value="hellowor

那么以丅的结果会打印出什么呢?

那么继续test函数换成以下两种又会是什么结果呢

test2是网上比较常见的,结果是我们在读取i的时候i已经全部变为5;test3和test只有两行代码不同,但是结果却完全不一样

之前曾经理解是因为我们调用的时候for循环已经执行完,所以会拿到i为5但是其实这只是表象,最核心的其实只有一句话:

闭包通过引用而不是值(非引用)来获取他们外部的变量

因为是引用类型所以在for执行完之后,i变为了5引用类型也就继而变为5.

在test中添加了一行可以验证的代码就是:

通过在局部作用域声明非引用类型,将单次循环是的引用类型保存下来那么就能获取我们想要的结果了。

在注解上的注解这种方式所形成的注解层级结构中,元注解在层级结构的上面我叫它父注解(SuperAnnotation),被注解的注解在层级结构的下面叫它子注解(SubAnnotation)。引入元注

还有其他方法通过自执行函数传递参数,将引用类型变为非引用类型都是一个原悝:

其次就是在IIFE来创建局部作用域的时候需要注意不能再作用域外部使用break与continue,这样的写法是不合法的

//json第一级数量和arr长度相等的主要是換第二级的key
 

我要回帖

更多关于 TEMP 的文章

 

随机推荐