zoukankan      html  css  js  c++  java
  • JS基础知识二(函数、全局/局部变量、对象、方法)

    一. 函数

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            //定义一个函数
            function sayHello(name) { //注意:函数参数的声明不需要加上var关键字。
                alert("hello " + name);
            }
    
            function getName() {
                return "小宝"; //如果需要返回数据就使用return。否则就不需要写return。
            }
    
            var getName = function(name) { //如果存在同名函数,那么后面定义函数会覆盖前面定义的函数。
                return "大宝";
            };
    
            //sayHello("python"); //如果函数有参数,调用函数的时候需要传入参数。
    
            var username = getName();
            alert(username);
        </script>
    </head>
    <body>
    
    </body>
    </html>

    二. 全局变量和局部变量

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            //var num = 10; //全局变量,可以被改页面中所有的函数引用
            function test1() {
                num = 10; //局部变量,只能够在当前函数中有效。
                        // 在函数中定义变量时候不加var,浏览器就会在全局中定义该变量。
                alert(num);
            }
    
            function test2() {
                alert(num); //可以访问到test1函数中定义的num。为什么?
            }
    
            test1();
            test2();
        </script>
    </head>
    <body>
    
    </body>
    </html>

    三. 自定义对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            //自定义对象
            function Person() {}
    
            //使用New关键字创建对象
            var person = new Person(); //创建User对象,赋值给user变量
            //对象可以有属性(事物特征)和方法(事物行为)
            person.name = "张三"; //给person对象添加name属性
            person.age = 18; //给person对象添加age属性
    
            person.eat = function() { //给person对象添加eat方法(行为)
                alert(this.name + "正在吃饭..."); //this代表当前方法的调用者对象
            };
    
            //调用对象的属性
            //alert(person.name + ", " + person.age);
            //调用对象的方法
            person.eat();
        </script>
    </head>
    <body>
    
    </body>
    </html>

    四. 创建对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            function Person(name, age) {
                this.name = name;  //this就是代表当前对象。
                this.age = age;
    
                this.sleep = function() {
                    alert(this.name + "正在睡觉..."); //this代表当前函数的调用者对象
                }
            }
    
            var person = new Person("李四", 20);
            //alert(person.name + "," + person.age);
            person.sleep();
        </script>
    </head>
    <body>
    
    </body>
    </html>

    五. 使用Object创建对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            var person = new Object();
            person.name = "小钟";
            person.age = 25;
            person.code = function() {
                alert(this.name + "正在写代码...");
            };
    
            // alert(person.name + ", " + person.age);
            person.code();
        </script>
    </head>
    <body>
    
    </body>
    </html>

    六. 使用json语法创建对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            //json语法创建对象
            var person = {
                name : "太白金星",
                age : 20,
                run: function() {
                    alert(this.name + "正在跑步...");
                }
            };
    
            // alert(person.name + ", " + person.age);
            person.run();
        </script>
    </head>
    <body>
    
    </body>
    </html>

    七. string对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            var s1 = "10";
            var s2 = new String("10");
            var s3 = new String("10");
            //alert(typeof(s1)); //string
            //alert(typeof(s2)); //object
            //alert("s1 == s2 ?" + (s1 == s2)); //true
            //alert("s2 == s3 ?" + (s2 == s3)); //false
        </script>
    </head>
    <body>
    
    </body>
    </html>

    八. string对象的常用方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            var country = "中国".fontcolor("red"); //<font color=“red”>中国</font>
            document.write(country.concat("<br/>"));
    
            var str = "Hello World Hello World";
            document.write(str.charAt(6) + "<br/>"); //根据索引查找字符
            document.write(str.charCodeAt(6) + "<br/>"); //根据索引查找字符的unicode编码
            document.write(str.indexOf("World") + "<br/>");  //查找字符串中指定子串的第一次出现的索引值
            document.write(str.lastIndexOf("World") + "<br/>"); //查找字符串中子串最后出现的索引值
            document.write(str.substring(12, 17) + "<br/>"); //提取字符串指定开始和结束位置的内容
            document.write(str.substr(12, 5) + "<br/>"); //提取字符串中指定内容,第一个参数开始位置,第二个参数提取字符的长度
            document.write(str.valueOf()); //返回字符串的内容
        </script>
    </head>
    <body>
    
    </body>
    </html>

    九. 案例:实现字符串的反转

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            //案例:定义一个函数,实现字符串的反转功能
            function reverse(srcStr) {
                //定义一个循环,从字符串的右边开始获取每一个字符
                var tempStr = "";
                for (var i = srcStr.length - 1; i >= 0; i--) {
                    var c = srcStr.charAt(i);
                    //把获取到的字符重新拼接成新的字符串
                    // tempStr = tempStr + c;
                    tempStr += c;
                }
                return tempStr;
            }
    
            var s = reverse("abcd");
            alert(s);
        </script>
    </head>
    <body>
    
    </body>
    </html>

    十. Number对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            /*var num = 10;
            // var num = new Number(10);
            document.write("二进制:" + num.toString(2) + "<br/>");
            document.write("三进制:" + num.toString(3) + "<br/>");
            document.write("八进制:" + num.toString(8) + "<br/>");
            document.write("十进制:" + num.toString() + "<br/>");
            document.write("十六进制:" + num.toString(16) + "<br/>");*/
    
            /*
                执行parseInt函数的时候,默认它只会把字符串第一个非数字(包含空格)前面字符进行转换。
                如果第一个字符是非数字(不包含空格),那么转换结果为NaN。
            */
            var s = "1 0"; //把字符串转换成Number
            var num = parseInt(s); //把字符串转换成number
            document.write("num的类型:" + typeof(num) + "<br/>");
            document.write(num + "<br/>"); //NaN
        </script>
    </head>
    <body>
    
    </body>
    </html>

    十一. Math对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            document.write("绝对值: " + Math.abs(-10) + "<br/>");
            document.write("向上取整: " + Math.ceil(3.14) + "<br/>");
            document.write("向下取整: " + Math.floor(3.14) + "<br/>");
            document.write("四舍五入: " + Math.round(3.14) + "<br/>");
            document.write("求最大值: " + Math.max(3, 5) + "<br/>");
            document.write("求最小值: " + Math.min(3, 5) + "<br/>");
            document.write("生成随机数: " + Math.random() + "<br/>"); //生成0~1之间的随机数,不包含1.
        </script>
    </head>
    <body>
    
    </body>
    </html>

    十二. 生成四位数验证码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            //案例:在网页上生成一个四位数的验证码
            var vrcode = "";
            for (var i = 0; i < 4; i++) {
                var num = Math.floor(Math.random() * 10); //0~9.99999999999999999
                vrcode += num;
            }
            document.write(vrcode);
        </script>
    </head>
    <body>
    
    </body>
    </html>

    十三. Date对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            function getDate(d) {
                //alert(d.getTime()); //获取当前时间的毫秒数
                var yy = d.getFullYear(); //获取年份
                var mm = d.getMonth() + 1; //获取月份
                var dd = d.getDate();  //获取日
                var hh = d.getHours(); //获取小时
                var min = d.getMinutes(); //获取分钟
                var sec = d.getSeconds(); //获取秒
                //document.write(yy + "年" + mm + "月" + dd + "日 "
                 //   + hh + "时" + min + "分" + sec + "秒");
                return yy + "" + mm + "" + dd + ""
                   + hh + "" + min + "" + sec + "";
            }
    
            var d = new Date(); //代表当前时间的Date对象
            var dateStr = getDate(d);
            document.write(dateStr);
        </script>
    </head>
    <body>
    
    </body>
    </html>

    十四. Array对象

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            /*var arr1 = new Array(); //定义空数组
            var arr2 = new Array(10); //定义默认长度的数组
            var arr3 = new Array(10, 20, 30); //定义数组时候指定数组元素*/
    
            var arr4 = [10, 20, 30];
            var arr5 = [11, 22, 33];
            //arr4 = arr4.concat(40, 50); //该方法返回拼接后的新数组
            arr4 = arr4.concat(arr5, 99, 100);
            //document.write("第一个元素: " + arr4[0] + "<br/>");
            //document.write("第二个元素: " + arr4[1] + "<br/>");
            //循环数组
            for (var i = 0; i < arr4.length; i++) {
                document.write(arr4[i] + ",");
            }
        </script>
    </head>
    <body>
    
    </body>
    </html>

    十五. Array对象的常用方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            //把数组转换成字符串
            //第一个参数代表待转换的数组,第二参数代表分隔符
            //返回数组的字符串表示形式
            function join(arr, sep) {
                var arrStr = "";
                for (var i = 0; i < arr.length; i++) {
                    arrStr = arrStr + arr[i] + sep;
                }
                return arrStr.substring(0, arrStr.length - 1);
            }
    
            var arr = ["java", "python", "go"];
            //var str = join(arr, ":");
            var str = arr.join(";");
            alert(str);
        </script>
    </head>
    <body>
    
    </body>
    </html>

    十六. 扩展对象功能

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            /*//查询数组的某个元素,返回该元素在数组中的索引值。如果没有该元素,就返回-1。
            function search(arr, key) { //key代表要查找的元素
                for (var i = 0; i < arr.length; i++) {
                    if (arr[i] == key) {
                        return i;
                    }
                }
                return -1;
            }
    
            var arr = [20, 33, 9, 11, 100];
            var i = search(arr, 99);
            alert(i);*/
    
            Array.prototype.search = function(key) {
                for (var i = 0; i < this.length; i++) { //this代表当前数组对象
                                                        //谁调用search方法,this就代表谁
                    if (this[i] == key) {
                        return i;
                    }
                }
                return -1;
            };
    
            var arr = [20, 33, 9, 11, 100];
            var i = arr.search(33);
            alert(i);
        </script>
    </head>
    <body>
    
    </body>
    </html>

    十七. push和pop方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            var arr = new Array();
            arr.push("小宝");
            arr.push(18);
            arr.push(new Date());
    
            //alert(arr);
            var temp = arr.pop(); //移除并返回最后一个元素
            alert(temp);
            alert(arr);
    
        </script>
    </head>
    <body>
    
    </body>
    </html>

    十八. reverse方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            var arr = [10, 20, 30];
            /*var newArr = new Array();
            for (var i = arr.length - 1; i >= 0; i--) {
                newArr.push(arr[i]);
            }
            alert(newArr);*/
            arr.reverse(); //反转数组
            alert(arr);
        </script>
    </head>
    <body>
    
    </body>
    </html>

    十九. slice方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            //slice: 返回指定开始和结束位置元素所组成的新数组
            var arr = [10, 20, 30, 40, 50, 99, 100];
            function slice(arr, start, end) {
                var newArr = new Array();
                while (start < end) {
                    newArr.push(arr[start]);
                    start++;
                }
                return newArr;
            }
    
            var tempArr = slice(arr, 2, 5);
            //var tempArr = arr.slice(2, 5); //提取数组中开始和结束位置之间的元素,
                                        // 并返回这些元素锁组成的新数组
            alert(tempArr);
        </script>
    </head>
    <body>
    
    </body>
    </html>

    二十. splice方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            var arr = [10, 20, 30, 40, 50, 99, 100];
            var delArr = arr.splice(2, 3, 11, 22, 33); //从下标为2的元素开始移除3个元素,
                                                    // 并且在原来移除位置插入11, 22, 33
            alert(delArr);
            alert(arr);
        </script>
    </head>
    <body>
    
    </body>
    </html>

    二十一. sort方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            var arr = ['a', 'c', 'h', 'e'];
            //var arr = [10, 44, 22, 15]
            //arr.sort(); //按照元素的ascii码进行升序排列
            //alert('a' - 'b');
            //alert("a".charCodeAt(0));
            arr.sort(function(a, b) {
                // return a - b; //升序
                //return b - a; //序列
                return b.charCodeAt(0) - a.charCodeAt(0);
            });
            alert(arr);
        </script>
    </head>
    <body>
    
    </body>
    </html>

    二十二. tofixed方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            var num = 13 / 3;
            alert(num.toFixed(2)); //返回2位小数的字符串
        </script>
    </head>
    <body>
    
    </body>
    </html>
  • 相关阅读:
    java 编程思想——基础篇
    JDK编译器针对final变量的优化
    Java源码分析:深入探讨Iterator模式——迭代器模式
    JDK源码分析:java.lang.String
    JDK源码分析——Java.util.Vector的浅析
    JDK1.5下的String优化
    关于GDAL打开hfa大文件的问题
    使用SQLite3支持中文路径
    如何使用GDAL进行AOI裁剪
    常用直线生成算法
  • 原文地址:https://www.cnblogs.com/shawnhuang/p/10438062.html
Copyright © 2011-2022 走看看