`
ruilin215
  • 浏览: 1148524 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

一些JavaScript 1.6~1.8上的高级技巧~

阅读更多

在jslibs的项目wiki上看到这些技巧,都是一些在mozilla spidermonkey javascript上的高级戏法。在JScript上不能用的哈~。这里转过来,很多技巧挺有趣的。
原文引用在:
http://code.google.com/p/jslibs/wiki/JavascriptTips

------------------------------------------

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 in5)
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');

functionThrowAnError(){

(function(){

thrownewError("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 =newfunction(){

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 instanceofStopIteration){
_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:
0123456789 test.js:4:ReferenceError: i isnotdefined
14. Iterate on values
JavaScript 1.6
for each (var i in[3,23,4])
Print(i)
Prints:
3
23
4
分享到:
评论

相关推荐

    JavaScript王者归来(目录)

    - 展示了一些有趣的JavaScript技巧和秘密功能。 - **1.4.2 为客户端服务--经典HelloWorld!的另一种JavaScript实现** - 提供了一种新颖的方式来展示Hello World程序。 - **1.4.3 数据交互--JavaScript的一项强大...

    JavaScript王者归来part.1 总数2

     1.6 一个例子--JavaScript编写的计算器   1.7 学习和使用JavaScript的几点建议   1.8 关于本书的其余部分   第2章 浏览器中的JavaScript  2.1 嵌入网页的可执行内容   2.2 赏心悦目的特效   2.3 使用...

    Ajax详解.rar

    今天,如果想跟上最新的技术时尚,那您的目标就是 Ajax。 请访问 Ajax 技术资源中心,这是有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki 和新闻。任何新信息都能在这里找到。 但是,...

    javascript-curriculum

    通过这个JavaScript教程,你将能够从零开始学习JavaScript,逐步掌握其核心概念和实用技巧,为构建动态网页和Web应用打下坚实基础。同时,你还将接触到当前流行的前端框架,提升你的项目开发能力。不断实践和探索,...

    AJAX教程

    5.7 实现高级JavaScript技术:如Promise、async/await等,提高AJAX代码的可读性和可维护性。 5.8 小结:利用这些工具和技巧可以提升AJAX开发的效率和质量。 **6. AJAX与测试** 6.1 JavaScript提出的问题:...

    Ajax基础教程(正式版)

    介绍几种高级JavaScript编程技术,包括面向对象编程、信息隐藏和基于类的继承等。 - **5.8 小结** 概述构建Ajax开发工具箱的方法和技术,为开发高质量的Ajax应用打下坚实的基础。 #### 第6章:使用JsUnit测试...

    uni-app跨平台移动应用开发教程

    **1.6 拓展的对象功能** **1.6.1 解构** 解构赋值允许按照一定模式,从数组、对象中提取值,并给变量赋值。 - **示例**: ```javascript const person = { name: "张三", age: 30 }; const { name, age } = ...

    TIBCO Jaspersoft® Studio 5.2官方用户指导学习教程

    本教程通过逐章的介绍,让用户能够熟练掌握Jaspersoft Studio的基本操作和高级技巧。 第一章:Jaspersoft Studio入门 - 1.1介绍了Jaspersoft Studio的概览。 - 1.2详细讲解了用户界面,包括工具栏、设计面板、组件...

    JAVA学习之路:不走弯路,就是捷径

    培养对JAVA的兴趣可以通过多种方式实现,比如参与一些实际项目,或者通过解决具体问题来增加学习的乐趣。 ##### 1.2 选择合适的学习路径 选择合适的JAVA学习路径至关重要。对于初学者而言,可以从基础的C语言或C++...

    JS函数式编程指南

    - **技巧**: 提供调试函数式代码的一些技巧。 ##### 1.8.3 范畴学 - **理论**: 讨论范畴学理论在函数式编程中的应用。 - **示例**: 通过具体示例来说明范畴学的实际意义。 ##### 1.8.4 总结 - **回顾**: 回顾本...

    Domino Web Access 7定制实用教程

    ### Domino Web Access 7 定制实用教程知识点详解 #### 1. Domino Web Access ...本教程提供了丰富的定制指南和案例研究,帮助开发者深入了解 Domino Web Access 的定制机制,并掌握实现高级定制所需的技能和技巧。

    HTML5 Canvas核心技术 图形、动画与游戏开发

    - **1.12 总结**:本章总结了`canvas`的基础知识和一些实用的绘图技巧。 #### 第2章 绘制 - **2.1 坐标系统**:介绍`canvas`中的坐标系统及其工作原理。 - **2.2 canvas的绘制模型**:概述`canvas`的绘制流程和...

    YUI 3 Cookbook

    **YUI 3** 是一个由雅虎开发的JavaScript库,它提供了丰富的功能来帮助开发者创建高质量的Web应用程序。这本书《YUI 3 Cookbook》由Evan Goer撰写,针对不同层次的读者提供了实用的指南。无论是初学者还是经验丰富的...

    IBM WebSphere Portal主题与皮肤开发教程

    更改登录方式可能会引入一些遗留问题,比如安全性问题、用户体验问题等。这些问题需要在开发过程中予以考虑并解决。 ##### 1.6 Portlet的皮肤开发 **1.6.1 更换标题背景图片** Portlet的皮肤开发允许开发者自定义...

    Dorado7实战必修之企业通讯录离线教程.pdf

    ### Dorado7实战必修之企业通讯录离线教程知识点概览 #### 一、搭建开发环境 ...通过这些章节的学习,开发者将能够全面掌握Dorado7的基本操作和高级技巧,从而更好地应用于实际的企业通讯录项目开发中。

    java培训课程体系

    - **字符串的拼接:** 使用不同的方法进行字符串拼接,并了解性能上的差异。 ##### 1.6 继承和多态 - **继承的概念与作用:** 了解继承的好处,如代码复用等。 - **super关键字:** 掌握super关键字的使用场景。 - ...

Global site tag (gtag.js) - Google Analytics