javascript - 用作 onclick 处理程序的函数运算符和函数声明的行为不同

标签 javascript scope

<分区>

我有两个功能:

doSomething = function()  {
    alert(this);
}


var doSomethingElse = function() {
    alert(this);
}

这是我的 HTML:

<div id="banner-message">
  <p>Hello World</p>
  <button id='button1' onclick='doSomething()'>Do Something</button>
  <button id='button2' onclick='doSomethingElse()'>Do Something Else</button>
</div>

为什么 doSomething() 函数调用起作用而 doSomethingElse() 不起作用?

https://jsfiddle.net/brjdp56t/

最佳答案

有细微的差别。这会在全局范围内创建 doSomething:

doSomething = function()

这会在当前范围内创建 doSomething:

var doSomething = function()

后者不起作用的原因是因为您在范围内执行此代码 (closure, window.onload = function() {}, $(function() { }) 等),因此该变量在作用域外不可用。在 fiddle 中,JavaScript 代码被包装在 window.onload = function() { var doSomethingElse = ... } 中。

关于javascript - 用作 onclick 处理程序的函数运算符和函数声明的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52679118/

相关文章:

javascript - 写入文件时添加了奇怪的字符

javascript - 将具有相同属性的模型嵌套到 div 中的最简单方法?

ios - 在切换案例中声明UI对象

ruby-on-rails - ActiveAdmin:未定义的方法 'unscoped'

javascript - 我的洗牌程序出了什么问题?

javascript - 在对象内部迭代对象

javascript - C# 替换字符串的动态内容

Ruby:在让出过程中,谁是 block 内的 self?

javascript - Angular 模型仅在 console.log() 之后更新

javascript - ember js 中的类和作用域