Forum
2008年11月21日
..::
Forum
::..
注册
登录
导航
首页
博客
下载中心
Dota AllStars
论坛
相册
网站目录
新加坡
友情连接
在线游戏
出国打工留学
网络热文
化妆品评价
搜索
友情链接
Knowledges Base
Tips ABC
Hua Chao & June
Every Little Thing
ZZCC - Zhang
孤狼地带
弦断有谁听
行万里路
Dota Guide
Yu
闲 (NC-16)
Health Beauty Fitness
论坛
搜索
论坛首页
聚合
IT
Html & JavaScript
[转]一些JavaScript...
[转]一些JavaScript 1.6~1.8上的高级技巧~
AD Robot
2007/9/10 0:00:00
FengLiN
124个帖子
www.huachaojune.com
[转]一些JavaScript 1.6~1.8上的高级技巧~
1.
destructuring assignments
JavaScript 1.7
var
{
a
:
x
}
=
{
a
:
7
};
Print
(
x
);
// prints: 7
2.
Generator Expressions
JavaScript 1.7
[
y
for
(
y
in
[
5
,
6
,
7
,
8
,
9
]
)
]
// is [0,1,2,3,4]
and
[
y
for
each
(
y
in
[
5
,
6
,
7
,
8
,
9
]
)
]
// is [5,6,7,8,9]
Because in
for
extracts index names, and
for each
extracts the values.
3.
Advanced use of iterators
JavaScript 1.8
Number
.
prototype
.
__iterator__
=
function
()
{
for
(
let i
=
0
;
i
<
this
;
i
++
)
yield
i
;
};
for
(
let i
in
5
)
print
(
i
);
prints:
1
2
3
4
5
This make Number object to act as a generator.
4.
Expression Closures
JavaScript 1.8
function
(
x
)
x
*
x
;
Note that braces
{
...
}
and
return
are implicit
5.
Basic debugging
JavaScript 1.6
LoadModule
(
'jsstd'
);
function
ThrowAnError
()
{
(
function
(){
throw
new
Error
(
"Whoops!"
);
})();
}
try
{
ThrowAnError
()
}
catch
(
e
)
{
Print
(
e
.
stack
);
}
prints:
Error
(
"Whoops!"
)
@
:
0
()
@test
.
js
:
7
ThrowAnError
()
@test
.
js
:
5
@test
.
js
:
14
6.
Multiple-value returns
JavaScript 1.7
function
f
()
{
return
[
1
,
2
];
}
var
[
a
,
b
]
=
f
();
Print
(
a
+
' '
+
b
);
// prints: 1 2
7.
Operator [ ] and strings ( like charAt() )
JavaScript 1.6
var
str
=
'foobar'
;
Print
(
str
[
4
]
);
prints:
a
8.
indexOf() and lastIndexOf() Works on Array
JavaScript 1.6
var
obj
=
{};
var
arr
=
[
'foo'
,
567
,
obj
,
12
.
34
];
Print
(
arr
.
indexOf
(
obj
)
);
// prints: 2
9.
Using Array functions on a non-Array object
JavaScript 1.7
var
obj
=
{};
Array
.
push
(
obj
,
'foo'
);
Array
.
push
(
obj
,
123
);
Array
.
push
(
obj
,
5
.
55
);
Print
(
obj
.
toSource
()
);
// prints: ({0:"foo", length:3, 1:123, 2:5.55})
10.
Simulate threads using yield operator
JavaScript 1.7
var
scheduler
=
new
function
()
{
var
_workers
=
[];
this
.
Add
=
function
(
worker
)
{
_workers
.
push
(
new
worker
()
);
}
this
.
Run
=
function
()
{
while
(
_workers
.
length
)
for
each
(
var
worker
in
_workers
)
try
{
worker
.
next
();
}
catch
(
err
if
err
instanceof
StopIteration
)
{
_workers
.
splice
(
_workers
.
indexOf
(
worker
),
1
);
}
}
}
function
worker1
()
{
for
(
var
i
=
0
;
i
<
5
;
i
++
)
{
Print
(
'worker1: '
+
i
,
'\n'
);
yield
;
}
}
scheduler
.
Add
(
worker1
);
function
worker2
()
{
for
(
var
i
=
0
;
i
<
10
;
i
++
)
{
Print
(
'worker2: '
+
i
,
'\n'
);
yield
;
}
}
scheduler
.
Add
(
worker2
);
scheduler
.
Run
();
prints:
worker1
:
0
worker2
:
0
worker1
:
1
worker2
:
1
worker1
:
2
worker2
:
2
worker1
:
3
worker2
:
3
worker1
:
4
worker2
:
4
worker2
:
5
worker2
:
6
worker2
:
7
worker2
:
8
worker2
:
9
11.
swap two variables
JavaScript 1.7
var
a
=
1
;
var
b
=
2
;
[
a
,
b
]
=
[
b
,
a
];
12.
Destructuring assignment with function arguments
JavaScript 1.7
function
foo
(
[
a
,
b
]
)
{
Print
(
a
);
Print
(
b
);
}
foo
(
[
12
,
34
]
);
Prints:
12
34
13.
JavaScript scope and LET instruction
JavaScript 1.7
var
x
=
5
;
var
y
=
0
;
let
(
x
=
x
+
10
,
y
=
12
)
{
Print
(
x
+
y
);
}
Print
(
x
+
y
);
prints:
27
5
or,
for
(
let i
=
0
;
i
<
10
;
i
++
)
{
Print
(
i
+
' '
);
}
Print
(
i
);
prints:
0
1
2
3
4
5
6
7
8
9
test
.
js
:
4
:
ReferenceError
:
i
is
not
defined
14.
Iterate on values
JavaScript 1.6
for
each
(
var
i
in
[
3
,
23
,
4
]
)
Print
(
i
)
Prints:
3
23
4
看贴是缘分, 顶贴是友情.
第 1页 总共1页
聚合
IT
Html & JavaScript
[转]一些JavaScript...
完整视图
树状
旧到新
新到旧
搜索
论坛首页
Copyright 2008 by 三片叶
服务条款
隐私声明