zoukankan      html  css  js  c++  java
  • html 事件处理程序中的代码在执行时,有权访问全局作用域中的任何代码。

    看一个简单的例子:

    html:

    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="test.js"></script>
    </head>
    <body>
        <a href="#" id="test" class="link test test" onclick="fn()">baidu.com</a>
    </body>

    js:

    window.onload = function() {
        function fn(){
            console.log('fn');
        }
    };

    看起来,当我点击 a 标签的时候,应该有 log ‘fn’,然而实际上却是:

    image

    懵了一会儿,因为一般用 window.onload 不会出现这种问题,,,后来想了想明白了,因为 js高程-第三版-中 里是这么说的:

    html 事件处理程序中的代码在执行时,有权访问全局作用域中的任何代码。

    而上面的 fn 定义在 window.onload 的回调里,处于局部作用域,所以无法访问到,所以把 fn 放到全局作用域就行了,例如:

    <head>
        <meta charset="UTF-8">
        <title>Document</title>
         <script>
         function fn() {
             console.log('fn');
         }
         </script>
    </head>
    
    <body>
        <a href="#" id="test" class="link test test" onclick="fn()">baidu.com</a>
    </body>

    这样就 OK,或者把上面这个 script 放到 body 最后也是可以的,总结下就是:

    html 事件处理程序中的代码在执行时,有权访问全局作用域中的任何代码。

  • 相关阅读:
    ABP 异常
    Vmware中安装的Ubuntu不能全屏问题解决
    centos7.4 文件权限
    webpack 入门(1)
    webpack(2) 概念
    centos7.4 rpm命令
    centos7.4 which、whereis、locate的使用
    centos7.4 find命令
    centos7.4 lsof用法
    centos7.4 用户和组的管理
  • 原文地址:https://www.cnblogs.com/xianshenglu/p/8205781.html
Copyright © 2011-2022 走看看