zoukankan      html  css  js  c++  java
  • JavaScript函数

    JavaScript函数

    一:函数

    封装可以重复使用的代码

    使用场合:1主动调用.2事件触发.

    和java一样JavaScript有编译的过程,因此不必像python那样必须先定义才能执行,只不过编译对变量有点特殊.

    <script type="text/javascript">
        // 函数定义
        function fnAlert(){
            alert('hello!');
        }
        // 函数执行         可以先执行,后定义
        fnAlert();
    </script>

    详解

    1:编译阶段,就算你把函数定义写在后面,编译阶段会把函数定义提前.

    特殊的就是变量的声明,也会被提前,不会被赋值,用undefined赋值.

    2:执行阶段,函数就没什么了,在执行阶段,只有遇到变量赋值语句才会把值替换undefined,否则你在变量赋值前调用都是undefined

    <script type="text/javascript">    
        fnAlert();       // 弹出 hello!
        alert(iNum);  // 弹出 undefined
        function fnAlert(){
            alert('hello!');
        }
        var iNum = 123;
    alert(iNum) //弹出123
    </script>

    二:匿名函数

    定义的函数可以不给名称,这个叫做匿名函数,可以将匿名函数直接赋值给元素绑定的事件来完成匿名函数的调用。

    <script type="text/javascript">
    
    window.onload = function(){
        var oBtn = document.getElementById('btn1');
        /*
        oBtn.onclick = myalert;
        function myalert(){
            alert('ok!');
        }
        */
        // 直接将匿名函数赋值给绑定的事件
    
        oBtn.onclick = function (){
            alert('ok!');
        }
    }
    
    </script>

    匿名函数往往是前面用一个变量指向,变成一个函数引用.使用时直接引用().

    函数的形参:函数可以不用任何形参来接收实参,因为默认有个arguments接收所有的实参,放到一个伪数组里面,之所以叫伪数组是因为,它有索引和长度,但是不能调用数组的方法.

    三:封闭函数

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

    (function myalert(){
        alert('hello!');
    })();

    这个更极端,定义完就执行,没有函数引用,说明只能调用一次

    封闭函数可以创造一个独立的空间,在封闭函数内定义的变量和函数不会影响外部同名的函数和变量,可以避免命名冲突,在页面上引入多个js文件时,用这种方式添加js文件比较安全,比如:

    var iNum01 = 12;
    function myalert(){
        alert('hello!');
    }
    (function(){
        var iNum01 = 24;
        function myalert(){
            alert('hello!world');
        }
        alert(iNum01);
        myalert()
    })()
    alert(iNum01);
    myalert();

    四:事件

    js中用事件函数来处理不用的时间.

    三步走:

    1.找到事件源,找到标签对象

    2.设置事件类型,例如点击事件,鼠标移动事件等

    3.编写事件驱动.事件驱动就是里面的回调函数,也可以直接用写好的函数.

    在html行间调用的事件可以提取到javascript中调用,从而做到结构与行为分离。

    五:定时器

    定时器在javascript中的作用
    1、制作动画
    2、异步操作
    3、函数缓冲与节流

    定时器类型及语法  

    /*
        定时器:都是回调函数
        setTimeout(2000,fn)  开启只执行一次的定时器,2秒之后回调fn函数. 调完就结束.
        clearTimeout 关闭只执行一次的定时器,相当于垃圾回收机制
        setInterval(time,fn)  反复执行的定时器,每隔几面就回调一次fn.只要不停一直开着
        clearInterval 关闭反复执行的定时器,相当于垃圾回收机制
    */ var time1 = setTimeout(myalert,2000); var time2 = setInterval(myalert,2000); /* clearTimeout(time1); clearInterval(time2); */ function myalert(){ alert('ok!'); }
    <!--行间事件调用函数   -->
    <script type="text/javascript">        
        function fnAlert(){
            alert('ok!');
        }
    </script>
    ......
    <input type="button" name="" value="弹出" onclick="fnAlert()">
    
    <!-- 提取行间事件 -->
    <script type="text/javascript">
    
    window.onload = function(){
        var oBtn = document.getElementById('btn1');
        oBtn.onclick = fnAlert;
        function fnAlert(){
            alert('ok!');
        }
    }    
    </script>
    ......
    <input type="button" name="" value="弹出" id="btn1">
    View Code

    虽然有这样的使用方法,但是别用,而是用jQuery的方式来替代.存在有意义,但是不一定合理,jQuery的链式调用更加简洁.

    看十遍不如自己写一遍!巩固基础,纵横开拓!
  • 相关阅读:
    android的快速开发框架集合
    总结防止APK被工具反编译、二次打包等
    iOS开发笔记--应用跳转
    iOS开发笔记--iOS沙盒机制
    iOS开发笔记--43个在GitHub上的优秀Swift开源项目推荐
    iOS开发笔记--iOS App图标和启动画面尺寸
    iOS开发笔记--iOS国际化与NSLocalizedString的使用
    iOS开发笔记--ios 画图总结
    iOS开发笔记--iOS中的触摸事件和手势处理
    iOS开发笔记--iOS中的多线程
  • 原文地址:https://www.cnblogs.com/gyxpy/p/11664744.html
Copyright © 2011-2022 走看看