HTML的标签中有以下点击事件
<span class="layui-btn layui-btn-xs" onclick=update(46,0)>已启用</span>
控制台抛出异常Uncaught ReferenceError: update is not defined
经过检查,确认是函数update()的作用域定义有问题
// 定义方式1,点击事件生效
update = function (id,status){
// 其他处理
}
// 定义方式2,点击事件生效
var update = function (id,status){
// 其他处理
}
// 定义方式3,点击事件生效
function update (id,status){
// 其他处理
}
// 此处引入layui
layui.use(['table', 'form'], function () {
// 定义方式4,点击事件生效
update = function (id,status){
// 其他处理
}
// 定义方式5,点击事件无效
var update = function (id,status){
// 其他处理
}
// 定义方式6,点击事件无效
function update (id,status){
// 其他处理
}
})
在以上6种的update
的定义方式中,只有1,2,3,4这四种是定义在全局作用域的,即定义后是以windows
对象作为作用域,
5和6的定义方式是等效的,但作用域都只限于layui沙盒内部
综上所述
函数定义后,调用时必须确保函数处于windows
作用域下,如果在类似于layui这样的沙盒内,只能使用定义方式4;
在其他情况下,定义方式1、2、3是等效的