js基础学习(一)

 <script type="text/javascript">
        //用(function(){xxx})()是利用匿名函数和闭包用来执行xxx里面的代码,同时所有的定义比如变量的作用域都在闭包里,不会污染到外部命名空间。
        //1. 使这段代码被载入时候自动执行。
        //2. 避免污染全局变量。
        //所以如果想实现某个功能又不想污染全局变量的时候,会用这个自执行的匿名函数,常见于jquery插件
        
        (function () {
            /**
              * 基本数据类型(3种)
              * (1)数字 number
              *   例如 3.1415927 ,0.251,.2,100,1.478E
              * (2)字符串
              *   string
              * (3)布尔 booble
              */
            //数字型转字符串
            var num1 = 3.1415927;
            var str1 = Number.toString(num1);
            document.write(typeof str1 == "string");//true
            document.write("<br>");
            //四舍五入,保留两位有效数字 
            var num2 = num1.toFixed(2);
            document.write(num2);//3.14
            document.write("<br>");
            //返回指定的为数的数字
            var num3 = num1.toPrecision(4);
            document.write(num3);//3.142
            document.write("<br>");
            //(Math) 介绍一点方法
            //四舍五入round
            document.write(Math.round(4.7));//5
            document.write("<br>");
            //随机出处理0~1
            document.write(Math.random());
            document.write("<br>");
            //0~10的随机数
            document.write(Math.floor((Math.random() * 11)));
            document.write("<br>");

            //字符串
            //如何转成数字
            var str2 = "aaa";
            var str3 = "3.14";
            var number = Number(str3);
            document.write(typeof number == "number");//true
            document.write("<br>");
            document.write((str2 - 0) + "<br>");//NaN 非数值
            document.write((str3 - 1) + "<br>");//如果是减法他回自动将字符串转成数字2.14
            document.write((str3 + 1) + "<br>");//加法会当成字符串的拼接操作3.141


            //布尔类型(boolean)
            //true | false
            var s = "";
            var o = {};//true
            var l = [];//true
            var n = null;
            var f = false;
            var u = undefined;
            document.write("-------------------------------<br>");
            if (!s) {
                document.write("s is false<br>");
            }
            if (!o) {
                document.write("o is false<br>");
            }
            if (!l) {
                document.write("l is false<br>");
            }
            if (!n) {
                document.write("n is false<br>");
            }
            if (!f) {
                document.write("f is false<br>");
            }
            if (!u) {
                document.write("u is false<br>");
            }

            /**
            s is false
            f is false
            u is false
            n is false
             */
            //判断一个对象是否为""、null、undefined,直接使用
            //if (str) {
                
            //}
            //数组
            //扩展数组的方法
            Array.each = function(array,fn) {
                for (var i = 0; i < array.length; i++) {
                    fn(array[i]);
                }
            }

            var arr2 = [1, 2, 3, 45, 6, 7, 8];
            Array.each(arr2,function(item) {
                document.write(item+"<br/>");
            });

            //函数
            var str = "var show= function(){alert(100);}()";
            //eval 它是把一个字符串解析成一个方法并且调用
            eval(str);
            //数据库会返回一个字符串(长得像javaScrpit数组)
            var a = "[1,2]";
            var array = eval(a);
            for (var i = 0; i < array.length; i++) {
                alert(array[i]);
            }


            //函数声明的两种方式
            function aa() {
                
            }
            aa();//aa()上面和下面都可以调用
            var bb = function() {
                
            }
            bb();//必须在bb()下面调用



            //接收回调函数的函数
            function add(x, y, fn) {
                this.x = x || 1;//如果有值就为x,否则默认为1
                this.y = y || 1;
                if (fn) {
                    fn(this.x + this.y);
                }
            }

            add(1,2,function(v) {
                if (v > 0) {
                    alert("result>0");
                } else {
                    alert("result<=0");
                }
            });
        })();
    </script>
 <script type="text/javascript">
        (function() {
            /**
             * conf = {gridName:"",gridCode:"",gridSize:""}
             */
            function gridUtil(conf) {
                alert(conf["gridName"] + " " + conf["gridSize"]);
            }
            gridUtil({ gridName: "aaa", gridSize: 10 });

             /**
               * 证明 : 基础变量是传递数值的,相当于“值类型”
               * 自定义对象传参方式是传得"地址",相当于“引用类型”
               */

            //函数递归
            //常见的编程题1-100用递归算法完成累加
            function add(start, end) {
                var num = 0;
                num = num + start;
                if (start<end) {
                    num = num + add(start+1,end);
                }
                return num;
            }

            alert(add(1, 100));


            //函数使用技巧,代理函数:用程序来决定返回的新的函数(他是一个生产函数的函数)
            var person = { "jim": "m", "lili": "w" };
            var test = function(name) {
                if (person[name] == "m") {
                    return function(nk, wk) {
                        alert(nk + "  " + wk);
                    }
                } else if (person[name] == "w") {
                    return function(nk, wk, fk) {
                        alert(nk + "  " + wk + "   " + fk);
                    }
                }
                return null;
            }

            test("jim")("nk", "wk");
            test("lili")("nk", "wk","fk");
        })();
    </script>

 

posted @ 2014-06-10 22:34  学亮  阅读(320)  评论(0编辑  收藏  举报