• js 函数定义的两种方式以及事件绑定(扫盲)


    一、事件(例如:onclick)绑定的函数定义放在jsp前面和放后面没影响

    二、

    1 $(function() {
    2    function func(){}; 
    3 })

    onclick通过如下方式绑定事件到jsp中:onclick = "func();"

    由于func()在函数中声明,是局部变量,onclick找不到func(),绑定失败。

    三、

    function func(){};
    
    onclick = "func();"

    这样绑定没有问题,因为func()此时是全局变量,不在任何函数中。

    四、

    func = function(){
    
    };
    
    onclick = "func();"

    这样绑定也没问题,另一种函数定义方式,也不在任何函数中,属于全局变量。

    五、

    $(function() {
       func = function(){
        
        }; 
    });
    
    
    onclick = "func();"

    这可以绑定成功,js中,在函数内部,不加var声明的变量是属于全局变量,所以这里func虽然放在函数中,却是全局变量,onclick可以正常触发。

    六、

    $(function {
       var func = function() {
    
        }; 
    });
    
    onclick = "func();"

    这绑定不成功,可以和情况五比较,func变量前加了var,变成了函数内部的局部变量,所以onclick访问不到func函数,不能触发。

    七、全局和局部变量:

    1、外部的为全局,内部的为局部变量。

    2、加var为局部变量(在方法内),不加var为全局变量(当方法内有一次使用后)

    <script type="text/javascript">
    var golbe="global";
    test();
    function test(){
         var local="local";
        document.write(golbe);
        document.write(local);
    }
    document.write(golbe);
    document.write(local);
    </script>

    在上面的test方法内,当把local变量的var去掉后,local就变成了全局变量,但是在局部不使用local,则这个local作为全局是无效的。

    为了验证这点,我把test方法内部唯一使用local变量的这句代码注释掉.发现在外部也打印不出来了。

    总结:全局变量可以不声明var 函数内变量必须声明var,在定义全局变量时加或不加var关键字没什么影响;但在定义局部变量时如果不加var关键字javascript解释程序会将其解释为全局变量。

  • 相关阅读:
    android activity状态保存
    android的5个进程等级
    android什么时候会产生ANR
    android压力测试monkey简单使用
    CodeIgniter学习笔记五:分页,文件上传,session,验证码
    CodeIgniter学习笔记四:CI中的URL相关函数,路由,伪静态,去掉index.php
    Scrapy使用示例
    CodeIgniter学习笔记三:扩展CI的控制器、模型
    Queries for Number of Palindromes(区间dp)
    Dungeon Master(三维bfs)
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/6755425.html
Copyright © 2020-2023  润新知