Vue 项目报错:‘$‘ is not defined ( no-undef )
错误原因是不认识 $
符,他是 JQuery
中得符号,引入了 JQuery
文件里的函数报错onclick is not defined问题(作用域问题)
window.onload = function (){
onload = function (){
第二种方法,改为 function del(obj){} , 则报错 del is not defined at HTMLAnchorElement.onclick
第三种方法改为 del = function(obj){},则也可以成功执行功能
onclick是要求全局函数 在onload里面的算局部函数 (当一个函数在另一个函数内创建,这个函数处于局部作用域中,就和局部变量一样,在全局环境下访问不到)
do = function(){}的写法会把do函数作为全局作用域函数(因为前面没有用变量var接收),相当于windows对象作为他的作用域,所以可以被调用到。
在函数体外使用var关键字定义的变量和在函数体内未用任何关键字声明的变量是全局变量,在函数体内使用var关键字声明的变量是局部变量。
Hoisting 是 JavaScript 将所有声明提升到当前作用域顶部的默认行为(提升到当前脚本或当前函数的顶部)正因如此,JavaScript 函数能够在声明之前被调用,
使用表达式定义的函数不会被提升。
定义函数的方式
1、函数声明
function sum( ){ }
2、函数表达式
var sum=function( ){ }
首先,window.onload事件是在整个页面包括dom结构、图片等等全部加载完成之后才会触发。
其次,HTML加载时由上往下的,在HTML加载的时候,遇到function关键字,声明一个函数的时候,就会在内存中开辟一个新的空间来对函数进行存储,方便以后进行调用。
所以,当将function fun(){}写到window.onload()=function(){}内部的时候,需要整个页面加载完成的之后,才声明这个函数,也就意味着,当HTML加载到οnclick="fun()"的时候,window.οnlοad=function(){}里面的函数f还没有被声明,这时候内存中就找不到function fun(),于是就会报错。
那么,将function fun()移到window.onload()=function(){}外,则HTML加载到<head></head>的时候就会声明函数f了,所以进行onclick绑定的时候就能够在内存中找到fun()并进行调用。这是方法3成功的原因
而方法2中的失败,当整个页面加载完毕后,给a标签添加删除按钮,而此时的onclick事件需要一个全局函数,当第二种方法,改为 function del(obj){} 在onload标签,就不再是全局函数,所以报错了
onclick
执行的是 window
环境中的方法,所以:将 this
中的方法关联到 window
上即可。
created() {
window.openPerson = this.openPerson
}
οnclick=“方法名”
<div οnclick="save()"></div>
但是今天我遇到一个问题,在js中写的方法调不到
//正确的是
save=function(){}
//错误的
var save=function(){}
function save(){}
有这么几种情况:
1、在函数中写的方法
$(function () {
function save() {
}
})
原因:save()他不是全局的方法了,onclick自然找不到他
解决方案:将save()设置为全局的
$(function () {
window.save= function () {
}
})
vue报错: error ‘xxx‘ is defined but never used no-unused-vars
报错原因:因为搭建的vue项目选择了eslint校验规范->就是你定义了某个变量,但是你没有使用它.eslint规范就是你要么不定义,要么定义了就一定得用.
ESLint 是在 ECMAScript/JavaScript 代码中识别和报告模式匹配的工具,它的目标是保证代码的一致性和避免错误.
在许多方面,它和JSLint、JSHint相似.
解决方法:
在package.json文件内加入如下代码(保存后重启项目!!!)
"rules": {
"generator-star-spacing": "off",
"no-tabs":"off",
"no-unused-vars":"off",
"no-console":"off",
"no-irregular-whitespace":"off",
"no-debugger": "off"
},
在运行npm run serve时报错 Module not found: Error: Can't resolve 'axios'
原因:没有安装axios插件 在运行项目的地方npm install --save axios
解决办法
npm install --save axios