zoukankan      html  css  js  c++  java
  • js-MediumGrade-base.js

    // 1.JavaScript 中的类型包括
    
        Number(数字)
        String(字符串)
        Boolean(布尔)
        Symbol(符号)(第六版新增)
        Object(对象)
            Function(函数)
            Array(数组)
            Date(日期)
            RegExp(正则表达式)
        Null(空)
        Undefined(未定义)
    
    
    
    // 2.数字
    
        Math.sin(3.5);
        var d = Math.PI * r * r;
    
        parseInt("123", 10); //10进制
        parseInt("120", 8);     //8进制
        parseInt("120", 16); //16进制
        parseInt("hello", 10); // NaN
    
        parseFloat()
    
        isNaN(NaN); // true
        Infinity(正无穷)
        -Infinity(负无穷)
    
        isFinite(1/0); // false
        isFinite(-Infinity); // false
        isFinite(NaN); // false
    
    
    
    // 3.字符串
        
        "hello".length; // 5
        "hello".charAt(0); // "h"
        "hello, world".replace("hello", "goodbye"); // "goodbye, world"
        "hello".toUpperCase(); // "HELLO"
    
    
    
    // 4.变量
    
        var a;
        var name = "simon";
    
    
    
    // 5.运算符
    
        x += 5; // 等价于 x = x + 5;
        "hello" + " world"; // hello world
        "3" + 4 + 5; // 345
        3 + 4 + "5"; // 75
    
        123 == "123" // true
        1 == true; // true
    
        1 === true; //false
        123 === "123"; // false
    
    
    
    // 6.控制结构
    
        var name = "kittens";
        if (name == "puppies") {
          name += "!";
        } else if (name == "kittens") {
          name += "!!";
        } else {
          name = "!" + name;
        }
        name == "kittens!!"; // true
    
        ///////////////////////////////////////////
    
        while (true) {
          // 一个无限循环!
        }
        var input;
        do {
          input = get_input();
        } while (inputIsNotValid(input))
    
        ///////////////////////////////////////////
    
        for (var i = 0; i < 5; i++) {
          // 将会执行五次
        }
    
        ///////////////////////////////////////////
    
        switch(action) {
            case 'draw':
                drawIt();
                break;
            case 'eat':
                eatIt();
                break;
            default:
                doNothing();
        }
    
    
    
    // 7.运算符
        
        var name = o && o.getName();
        var name = otherName || "default";
        var allowed = (age > 18) ? "yes" : "no";  //三元操作符
    
    
    
    // 8.对象
        
        var obj = new Object();
        var obj = {};
        
    
        var obj = {
            name: "Carrot",
            "for": "Max",
            details: {
                color: "orange",
                size: 12
            }
        }
        obj.details.color; // orange
        obj["details"]["size"]; // 12
    
    
    
    // 9.数组
    
        var a = new Array();
        a[0] = "dog";
        a[1] = "cat";
        a[2] = "hen";
        a.length; // 3
    
        // 遍历数组的三种方法 依次更好
        for (var i = 0; i < a.length; i++) {
            // Do something with a[i]
        }
    
        for (var i = 0, len = a.length; i < len; i++) {
            // Do something with a[i]
        }
    
        for (var i = 0, item; item = a[i++];) {
            // Do something with item
        }
    
    
    array方法名称    描述
    
    a.toString()    //返回一个包含数组中所有元素的字符串,每个元素通过逗号分隔。
    a.toLocaleString()    //根据宿主环境的区域设置,返回一个包含数组中所有元素的字符串,每个元素通过逗号分隔。
    a.concat(item1[, item2[, ...[, itemN]]])    //返回一个数组,这个数组包含原先 a 和 item1、item2、……、itemN 中的所有元素。
    a.join(sep)    //返回一个包含数组中所有元素的字符串,每个元素通过指定的 sep 分隔。
    a.pop()    //删除并返回数组中的最后一个元素。
    a.push(item1, ..., itemN)    //将 item1、item2、……、itemN 追加至数组 a。
    a.reverse()    //数组逆序(会更改原数组 a)。
    a.shift()    //删除并返回数组中第一个元素。
    a.slice(start, end)    //返回子数组,以 a[start] 开头,以 a[end] 前一个元素结尾。
    a.sort([cmpfn])    //依据 cmpfn 返回的结果进行排序,如果未指定比较函数则按字符顺序比较(即使元素是数字)。
    a.splice(start, delcount[, item1[, ...[, itemN]]])    //从 start 开始,删除 delcount 个元素,然后插入所有的 item。
    a.unshift([item])    //将 item 插入数组头部,返回数组新长度(考虑 undefined)。
    
    
    
    // 10.函数
    
        function add() {
            var sum = 0;
            for (var i = 0, j = arguments.length; i < j; i++) {
                sum += arguments[i];
            }
            return sum;
        }
        add(2, 3, 4, 5); // 14
    
        // --------------------加法的函数---------------------
    
        function avg() {
            var sum = 0;
            for (var i = 0, j = arguments.length; i < j; i++) {
                sum += arguments[i];
            }
            return sum / arguments.length;
        }
        avg(2, 3, 4, 5); // 3.5
    
        // --------------------平均数的函数---------------------
    
        function avgArray(arr) {
            var sum = 0;
            for (var i = 0, j = arr.length; i < j; i++) {
                sum += arr[i];
            }
            return sum / arr.length;
        }
        avgArray([2, 3, 4, 5]); // 3.5
    
        // --------------------平均数的函数【逗号连接的变量串】---------------------
    
        var avg = function() {
            var sum = 0;
            for (var i = 0, j = arguments.length; i < j; i++) {
                sum += arguments[i];
            }
            return sum / arguments.length;
        };
    
        // --------------------匿名函数---------------------
    
    
    
    // 11.自定义对象
    
        function makePerson(first, last) {
            return {
                first: first,
                last: last
            }
        }
        function personFullName(person) {
            return person.first + ' ' + person.last;
        }
        function personFullNameReversed(person) {
            return person.last + ', ' + person.first
        }
        s = makePerson("Simon", "Willison");
        personFullName(s); // Simon Willison
        personFullNameReversed(s); // Willison, Simon
    
        // --------------------一般写法---------------------
        
        function makePerson(first, last) {
            return {
                first: first,
                last: last,
                fullName: function() {
                    return this.first + ' ' + this.last;
                },
                fullNameReversed: function() {
                    return this.last + ', ' + this.first;
                }
            }
        }
        s = makePerson("Simon", "Willison");
        s.fullName(); // Simon Willison
        s.fullNameReversed(); // Willison, Simon
    
        // --------------------对象概念 更优---------------------
    
        function Person(first, last) {
            this.first = first;
            this.last = last;
            this.fullName = function() {
                return this.first + ' ' + this.last;
            }
            this.fullNameReversed = function() {
                return this.last + ', ' + this.first;
            }
        }
        var s = new Person("Simon", "Willison");
    
        // --------------------this 改进已有的 makePerson函数---------------------
    
    
    
    // 12.内部函数
        
        function betterExampleNeeded() {
            var a = 1;
            function oneMoreThanA() {
                return a + 1;
            }
            return oneMoreThanA();
        }
    
    
    
    // 13.闭包
    
        function makeAdder(a) {
            return function(b) {
                return a + b;
            }
        }
        x = makeAdder(5);
        y = makeAdder(20);
        x(6); // 11
        y(7); // 27
    
    
    
    // 14.内存泄露
        
        // 闭包很容易发生无意识的内存泄露
    
            function addHandler() {
                var el = document.getElementById('el');
                el.onclick = function() {
                    el.style.backgroundColor = 'red';
                }
            }
    
        // 这个问题有很多种解决方法,最简单的一种是不要使用 el 变量
    
            function addHandler(){
                document.getElementById('el').onclick = function(){
                    this.style.backgroundColor = 'red';
                };
            }
    
        // 有趣的是,有一种破坏因为闭包引入循环引用的窍门是添加另外一个闭包:
    
            function addHandler() {
                var clickHandler = function() {
                    this.style.backgroundColor = 'red';
                };
                (function() {
                    var el = document.getElementById('el');
                    el.onclick = clickHandler;
                })();
            }
  • 相关阅读:
    面向对象思想
    jQuery随笔
    总结关于linux操作
    转.linux上安装python
    sql server 基本语句
    linux 常见指令
    loadrunner 录制时不自动弹出网页
    Linux 安装MySQL
    linux关于安装
    loadrunner 性能测试
  • 原文地址:https://www.cnblogs.com/cynthia-wuqian/p/4959348.html
Copyright © 2011-2022 走看看