第11章 JavaScript的子集和扩展

11.1 JavaScript的子集

  11.1.1 精华

  11.1.2 子集的安全性

11.2 常量和局部变量

<script type="text/javascript">
    //关键字let有4种使用方法
    //可以作为变量声明,和var一样
    //在for或for/in循环中,作为var的代替方案
    //在语句块中定义一个新变量并显示指定它的作用域
    //定义一个在表达式内部作用域中的变量,这个变量只在表达式内可用
    function oddsum(n) {
        let total = 0, result = [];
        for(let x = 1; x <= n;x++) {
            let odd = 2 * x - 1;
            total += odd;
            result.push(total);
        }
        return result;
    }
    //console.log(total); //ReferenceRrror
    console.log(oddsum(5));
</script>

11.3 解构赋值

<script type="text/javascript">
    //解构赋值(destructuring assignment)
    let [x,y] = [1,2];  //let x=1,y=2
    [x,y] = [x + 1,y + 1];  //x = x + 1,y = y + 1
    [x,y] = [y,x];
    console.log([x,y]);
</script>

11.4 迭代

  11.4.1 for/each 循环

<script type="text/javascript">
    let o = {one: 1,two: 2,three: 3}
    for(let p in o) {
        console.log(p);
    }
    //for each(let v in o) {
    //    console.log(v);
    //}
</script>

  11.4.2 迭代器

<script type="text/javascript">
    function counter(start) {
        let nextValue = Math.round(start);
        return { next: function() { return nextValue++; } };
    }
    let serialNumberGenerator = counter(1000);
    let sn1 = serialNumberGenerator.next();
    let sn2 = serialNumberGenerator.next();
</script>

  11.4.3 生成器

<script type="text/javascript">
    //生成器是一个对象,用以表示生成函器函数的当前执行状态
    /*
    function range(min,max) {
        for(let i = Math.ceil(min);i <= max;i++){
            yield i;
        }
    }
    for(let n in range(3,8)) {
        console.log(n);
    }
    */
</script>

  11.4.4 数组推导

<script type="text/javascript">
    //JavaScript1.7
    //数组推导是一种利用另外一个数组或可迭代对象来初始化数组元素的技术
    //let evensquares = [x*x for (x in range(0,10)) if (x % 2 === 0)];
    //let evensquares = [];
    //for(x in range(0,10)) {
    //    if(x % 2 === 0) {
    //        evensquares.push(x*x);
    //    }
    //}
    //[ expression for ( variable in object ) if ( condition ) ]
</script>

  11.4.5 生成器表达式

<script type="text/javascript">
    //let h = (f(x) for (x in g));
    //let lines = eachline(text);
    //let trimmed = (l.trim() for(l in lines));
    //let nonblank = (l for(l in trimmed) if (l.length > 0 && l[0] != ‘#‘));
</script>

11.5 函数简写

<script type="text/javascript">
    //对于简单的函数,JavaScript1.8引入一种简写形式:表达式闭包
    let succ = function(x) x + 1, yes = function() true, no = function() false;
</script>

11.6 多catch从句

<script type="text/javascript">
    /*
    try {
        throw 1;
    }
    catch (e if e instanceof ReferenceError) {

    }
    catch(e if e === "quit") {

    }
    catch(e if typeof e === "string") {

    }
    catch(e) {

    }
    finally {

    }
    */
</script>

11.7 E4X:ECMAScript for XML

时间: 2024-11-03 22:42:18

第11章 JavaScript的子集和扩展的相关文章

第十章:Javascript子集和扩展

本章讨论javascript的集和超集,其中子集的定义大部分处于安全考虑.只有使用这门语言的一个安全的子集编写脚本,才能让代码执行的更安全.更稳定.ECMScript3标准是1999年版本的,10年后,ECMAScript5规范的更新,由于ECMAScript标准规范是允许对其做任何扩充的,伴随着Mozilla项目的改进,Firefox1.0.1.5.2.3.和3.5版本中分别发布了javascript1.5.1.6.1.7.1.8.1.81版本,这些javascript的扩展版本已经融入到EC

微信小程序入门与实战/常用组件/API/开发技巧/项目实战 共11章

实战开发电影资讯微信小程序 学习之前需要掌握JavaScript和CSS基础 ----------------课程目录---------------- 第1章:什么是微信小程序 开篇及课程特色介绍 直观感受一下微信小程序 小程序适合做什么样的应用 对开发者的影响 学习基础 小作业 第2章:环境搭建与开发工具 开篇介绍及下载工具 小程序目前情况及限制 小程序开发工具介绍 第3章:开始小程序之旅 本章内容简介 官方种子项目介绍与小程序的文件结构 新建我们自己的项目:ReaderMovie 开始制作项

JavaScript的子集和超集

1.JavaScript子集 JavaScript子集的定义大部分都是出于安全考虑,只有使用这门语言的一个安全的子集编写脚本,才能让代码执行得更安全.更稳定,比如如何更安全地执行一段由不可信第三方提供的广告代码.JavaScript子集通常会移除JavaScript的一些特性,如ADsafe.dojox.secure.Caja.FBJS以及微软的Web Sandbox等,这些都实现了安全子集. 2.常量和局部变量 常量用const表示,局部变量用let表示,let声明一个块级作用域,超出作用域变

【Javascript】jQuery Validate扩展验证方法

/*****************************************************************jQuery Validate扩展验证方法*****************************************************************/// 判断整数value是否等于0 jQuery.validator.addMethod("isIntEqZero", function (value, element) { valu

锋利的jQuery第2版学习笔记8~11章

第8章,用jQuery打造个性网站 网站结构 文件结构 images文件夹用于存放将要用到的图片 styles文件夹用于存放CSS样式表,个人更倾向于使用CSS文件夹 scripts文件夹用于存放jQuery脚本,个人更倾向于使用JS文件夹存放所有的js及jQuery脚本 编写CSS样式 推荐首先编写全局样式,接着编写可大范围内重用的样式,最后编写细节样式,这样根据CSS最近优先原则,可以较容易地对网站进行从整体到细节样式的定义 第9章,jQuery Mobile jQuery Mobile主要

JavaScript学习总结(十四)——JavaScript编写类的扩展方法

在?J?a?v?a?S?c?r?i?p?t?中?可以使?用?类的p?r?o?t?o?t?y?p?e属性来?扩?展?类的属?性?和?方?法,在实际开发当中,当JavaScript内置的那些类所提供的动态方法和动态属性不满足我们实际开发时,我们就可以通过"prototype"属性给自定义类添加方法和属性或者扩展原有的类中的方法和属性. 一.扩展JavaScript内置类,添加动态方法 语法格式: 类名.prototype.方法名 = function([param1],[param2],.

Javascript使用函数apply扩展环境对象

Javascript使用函数apply扩展环境对象 通过实例对象作为参数传入调用构造函数对象的apply方法,以使实例对象作为环境对象在作为一个普通函数的构造函数中执行,构造函数的属性会覆盖到实例对象上,从而实现实例对象的属性扩展. 1.函数对象的apply和call传入参数     var tag = "global";      function say(){          for(var args = "", i = 0; i < arguments

统计学习方法 李航---第11章 条件随机场

第11章 条件随机场 条件随机场(conditional random field, CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场.条件随机场可以用于不同的预测问题,本章主要讲述线性链(linear chain)条件随机场在标注问题的应用,这时问题变成了由输入序列对输出序列预测的判别模型,形式为对数线性模型,其学习方法通常是极大似然估计或正则化的极大似然估计. 11.1 概率无向图模型 概率无向图模型(probabilist

javascript高级程序设计 第一章--javascript简介

javascript高级程序设计 第一章--javascript简介Netscape开发的javascript最初的目的就是处理由服务器负责的一些输入验证操作,而在js问世之前,必须                    把表单数据发到服务器端用户才能得到反馈.如今的js不再局限于简单的数据验证,而且具备了与浏览器窗口及其内容等所有方面的交互能力,js已经发展成功能全面的面向客户端的编程语言.javascript由Netscape公司开发,原名Livescript,是为了迎合当时的java热,所