13

作者: 冰鈊夢 | 来源:发表于2019-06-12 19:53 被阅读0次

    变量作用域

    变量作用域指的是变量的作用范围,javascript中的变量分为全局变量和局部变量。

    1、全局变量:在函数之外定义的变量,为整个页面公用,函数内部外部都可以访问。

    2、局部变量:在函数内部定义的变量,只能在定义该变量的函数内部访问,外部无法访问。

    <script type="text/javascript">

        //全局变量

        var a = 12;

        function myalert()

        {

            //局部变量

            var b = 23;

            alert(a);

            alert(b);

        }

        myalert(); //弹出12和23

        alert(a);  //弹出12   

        alert(b);  //出错

    </script>

    封闭函数

    封闭函数是javascript中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数。

    一般定义的函数和执行函数:

    function changecolor(){

        var oDiv = document.getElementById('div1');

        oDiv.style.color = 'red';

    }

    changecolor();

    封闭函数:

    (function(){

        var oDiv = document.getElementById('div1');

        oDiv.style.color = 'red';

    })();

    还可以在函数定义前加上“~”和“!”等符号来定义匿名函数

    !function(){

        var oDiv = document.getElementById('div1');

        oDiv.style.color = 'red';

    }()

    闭包

    什么是闭包 

    函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回

    function aaa(a){     

          var b = 5;     

          function bbb(){

              a++;

              b++;

            alert(a);

            alert(b);

          }

          return bbb;

      }

    var ccc = aaa(2);

    ccc();

    ccc();

    改写成封闭函数的形式:

    var ccc = (function(a){

      var b = 5;

      function bbb(){

          a++;

          b++;

        alert(a);

        alert(b);

      }

      return bbb;

    })(2);

    ccc();

    ccc();

    用处 

    1、将一个变量长期驻扎在内存当中,可用于循环中存索引值

    <script type="text/javascript">

        window.onload = function(){

            var aLi = document.getElementsByTagName('li');

            for(var i=0;i<aLi.length;i++)

            {

                (function(i){

                    aLi[i].onclick = function(){

                        alert(i);

                    }

                })(i);

            }

        }

    </script>

    ......

    <ul>

        <li>111</li>

        <li>222</li>

        <li>333</li>

        <li>444</li>

        <li>555</li>

    </ul>

    2、私有变量计数器,外部无法访问,避免全局变量的污染

    <script type="text/javascript">

    var count = (function(){

        var a = 0;

        function add(){

            a++;

            return a;

        }

        return add;

    })()

    count();

    count();

    var nowcount = count();

    alert(nowcount);

    </script>

    内置对象

    1、document

    document.referrer  //获取上一个跳转页面的地址(需要服务器环境)

    2、location

    window.location.href  //获取或者重定url地址

    window.location.search //获取地址参数部分

    window.location.hash //获取页面锚点或者叫哈希值

    3、Math

    Math.random 获取0-1的随机数

    Math.floor 向下取整

    Math.ceil 向上取整

    4、其他

    Array:

    concat 返回一个由两个数组合并组成的新数组。

    join  返回一个由数组中的所有元素连接在一起的 String 对象。

    pop  删除数组中的最后一个元素并返回该值。

    push 向数组中添加新元素,返回数组的新长度。

    shift 删除数组中的第一个元素并返回该值。

    unshift 返回一个数组,在该数组头部插入了指定的元素。

    sort  返回一个元素被排序了的 Array 对象

    reverse  返回一个元素反序的 Array 对象。

    slice 返回数组的一个片段。

    splice 从数组中删除元素

    Date:

    getYear() 返回年份(2位或4位)

    getFullYear() 返回年份(4位)

    getMonth() 返回月份  0-11

    getDate() 返回日期 1-31

    getDay() 返回星期数 0-6

    getHours() 返回小时数 0-23

    getMinutes() 返回分钟数 0-59

    getSeconds() 返回秒数 0-59

    getMilliseconds() 返回亳秒数0-999

    创建对象的方法 

    1、单体

    <script type="text/javascript">

    var Tom = {

        name : 'tom',

        age : 18,

        showname : function(){

            alert('我的名字叫'+this.name);   

        },

        showage : function(){

            alert('我今年'+this.age+'岁');   

        }

    }

    </script>

    2、工厂模式

    <script type="text/javascript">

    function Person(name,age,job){

        var o = new Object();

        o.name = name;

        o.age = age;

        o.job = job;

        o.showname = function(){

            alert('我的名字叫'+this.name);   

        };

        o.showage = function(){

            alert('我今年'+this.age+'岁');   

        };

        o.showjob = function(){

            alert('我的工作是'+this.job);   

        };

        return o;

    }

    var tom = Person('tom',18,'程序员');

    tom.showname();

    </script>

    2、构造函数

    <script type="text/javascript">

        function Person(name,age,job){           

            this.name = name;

            this.age = age;

            this.job = job;

            this.showname = function(){

                alert('我的名字叫'+this.name);   

            };

            this.showage = function(){

                alert('我今年'+this.age+'岁');   

            };

            this.showjob = function(){

                alert('我的工作是'+this.job);   

            };

        }

        var tom = new Person('tom',18,'程序员');

        var jack = new Person('jack',19,'销售');

        alert(tom.showjob==jack.showjob);

    </script>

    3、原型模式

    <script type="text/javascript">

        function Person(name,age,job){       

            this.name = name;

            this.age = age;

            this.job = job;

        }

        Person.prototype.showname = function(){

            alert('我的名字叫'+this.name);   

        };

        Person.prototype.showage = function(){

            alert('我今年'+this.age+'岁');   

        };

        Person.prototype.showjob = function(){

            alert('我的工作是'+this.job);   

        };

        var tom = new Person('tom',18,'程序员');

        var jack = new Person('jack',19,'销售');

        alert(tom.showjob==jack.showjob);

    </script>

    4、继承

    <script type="text/javascript">

            function fclass(name,age){

                this.name = name;

                this.age = age;

            }

            fclass.prototype.showname = function(){

                alert(this.name);

            }

            fclass.prototype.showage = function(){

                alert(this.age);

            }

            function sclass(name,age,job)

            {

                fclass.call(this,name,age);

                this.job = job;

            }

            sclass.prototype = new fclass();

            sclass.prototype.showjob = function(){

                alert(this.job);

            }

            var tom = new sclass('tom',19,'全栈工程师');

            tom.showname();

            tom.showage();

            tom.showjob();

        </script>

    (计算器)

    <!DOCTYPE html>

    <html lang="en">

    <head>

    <meta charset="UTF-8">

    <title>jisuanji</title>

    <script type="text/javascript">

    window.onload = function(){

    var one = document.getElementById('one');

    var otow = document.getElementById('tow');

    var ocount = document.getElementById('count');

    var oBtn = document.getElementById('btn');

    oBtn.onclick = function(){

    var val01 = one.value;

    var val02 = otow.value;

    if(val01=="" || val02==""){

    alert('输入框不能为空!');

    return;

    }

    if(isNaN(val01) || isNaN(val02)){

    alert('请输入数字!');

    return;

    }

    switch(ocount.value){

    case '0':

    alert((parseFloat(val01)*100 + parseFloat(val02)*100)/100);

    break;

    case '1':

    alert((parseFloat(val01)*100 - parseFloat(val02)*100)/100);

    break;

    case '2':

    alert((parseFloat(val01)*100) * (parseFloat(val02)*100)/10000);

    break;

    case '3':

    alert((parseFloat(val01)*100) / (parseFloat(val02)*100));

    break;

    }

    }

    }

    </script>

    </head>

    <body>

    <h1>计算器</h1>

    <input type="text"id="one" />

    <select id="count">

    <option value="0">+</option>

    <option value="1">-</option>

    <option value="2">*</option>

    <option value="3">/</option>

    <lect>

    <input type="text" id="tow" />

    <input type="button" value="计算" id="btn" />

    </body>

    </html>

    相关文章

      网友评论

          本文标题:13

          本文链接:https://www.haomeiwen.com/subject/pzyrfctx.html