JavaScript标准教程

 //1.参数的省略
     function f(a, b) {
            return a;
        }
        f(1, 2); //1
        f(1); //1
        f(); //undefined
//2.默认值
   //正确写法:
   function f2(a) {
            //上面代码的||表示“或运算”,即如果a有值,则返回a,否则返回事先设定的默认值(上              例为1);这种写法会对a进行一次布尔运算,只有为true时,才会返回a。可是,除了undefined以外,0、空字符、null等的布尔值也是false。也就是说,在上面的函数中,不能让a等于0或空字符串,否则在明明有参数的情况下,也会返回默认值。
            a = a || 1;
            return a;
        }
        f(''); //1
        f(); //1

        //精确写法:
    
    function f(a) {
            (a !== undefined && a !== null) ? a = a : a = 1;
            return a;
        }

        f() // 1
        f('') // ""
        f(0) // 0
        //3.传递方式
        //变量p是一个原始类型的值,传入函数f的方式是传值传递。因此,在函数内部,p的值是原始值的拷贝,无论怎么修改,都不会影响到原始值。
        var p = 2;
        function f(p) {
            p = 3;
        }
        f(p); //这里p的值是2

        //函数参数是复合类型的值(数组、对象、其他函数),传递方式是传址传递(pass by reference)。也就是说,传入函数的原始值的地址,因此在函数内部修改参数,将会影响到原始值。
        var obj = { p: 1 };
        function f(o) {
            o.p = 2;
        }
        f(obj); //这里obj.p等于2

     //4.arguments
        function f() {
            return arguments.length;
        }
        f(1, 2, 3)//3
        f(1); //1
        f(); //0

        // 要让arguments对象使用数组方法,真正的解决方法是将arguments转为真正的数组(2种方法)
        var args = Array.prototype.slice.call(arguments);
        // or

  var args = [];
        for (var i = 0; i < arguments.length; i++) {
            args.push(arguments[i]);
        }

        //5.闭包
        //链式作用域(http://javascript.ruanyifeng.com/grammar/function.html)
        //既然f2可以读取f1的局部变量,那么只要把f2作为返回值,我们可以在f1外部读取它的内部变量
     
   function f2() {
            var n = 999;
            function fn() {
                console.log(n);
            }
            return fn;
        }
        var result = f2();
        result();//999

=========================

setInterval(function(){},2000);自动回调dequene方法

 var $html = document.getElementById("d2");
    function cb1()
    { console.log(1); }
    function cb2()
    { console.log(2); }

    var p = $('p')[0];

    $.queue(p, 'mx', cb1);
    $.queue(p, 'mx', cb2);

     每2秒调用一次$.dequeue,依次输出1,2
    setInterval(function () {
        $.dequeue(p, 'mx');
    }, 2000);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书主要针对Web前端开发,以ECMAScript 5作为标准,目标是所讲的内容在实际开发之中基本够用,力求5-10年之内不会过时。 全书的内容比较广泛,只要是实战中用得到的东西都有涉及(核心语法、标准库、DOM、浏览器模型、外部代码库、开发工具等等)。全书的难度为中级, 比较适合对JavaScript已经有所了解、想进一步深入学习的读者,英语中称为“高级初学者”(advanced beginner),但是也照顾到入门者的需要,从最简单的开始讲起,循序渐进、由浅入深。另一方面,对于中级开发者,这本书也是有用的,它可以帮你系统 地复习和巩固JavaScript语言知识,你会发现这门语言有许多地方是你以前没有注意到的。 在写作风格上,力求做到清晰易懂,具有可读性。所有章节都带有大量的代码实例,这不仅是为了便于理解和模仿,也是为了随时可以用到实际项目中,做到即学即用。 由于本书选择以ECMAScript 5为标准,意味着不支持许多老式浏览器,其中最主要的就是IE6-8。如果用一句话来表达,就是本书不支持IE 8。这样做虽然会丧失一些实用性和兼容性,但是我认为,有利于保持行文的流畅和内容的清晰,可以使读者更好地掌握JavaScript。而且从历史角度 看,坚持书写符合语言标准的代码,将在长期中获得回报。如果你的项目需要支持这些老式浏览器,你可能需要检查用到的每一个语法特性的适用性,找出替代方 案。 标签:JavaScript

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值