Vue 項(xiàng)目報錯:‘$‘ is not defined ( no-undef )
錯誤原因是不認(rèn)識?$
?符,他是?JQuery
?中得符號,引入了?JQuery
文件里的函數(shù)報錯onclick is not defined問題(作用域問題)
window.onload = function (){
onload = function (){
第二種方法,改為 function del(obj){} , 則報錯? del is not defined at HTMLAnchorElement.onclick
第三種方法改為 del = function(obj){},則也可以成功執(zhí)行功能
onclick是要求全局函數(shù) ?在onload里面的算局部函數(shù) (當(dāng)一個函數(shù)在另一個函數(shù)內(nèi)創(chuàng)建,這個函數(shù)處于局部作用域中,就和局部變量一樣,在全局環(huán)境下訪問不到)
? ? ?do = function(){}的寫法會把do函數(shù)作為全局作用域函數(shù)(因?yàn)榍懊鏇]有用變量var接收),相當(dāng)于windows對象作為他的作用域,所以可以被調(diào)用到。
? ? ?在函數(shù)體外使用var關(guān)鍵字定義的變量和在函數(shù)體內(nèi)未用任何關(guān)鍵字聲明的變量是全局變量,在函數(shù)體內(nèi)使用var關(guān)鍵字聲明的變量是局部變量。
? Hoisting 是 JavaScript 將所有聲明提升到當(dāng)前作用域頂部的默認(rèn)行為(提升到當(dāng)前腳本或當(dāng)前函數(shù)的頂部)正因如此,JavaScript 函數(shù)能夠在聲明之前被調(diào)用,
? ? ?使用表達(dá)式定義的函數(shù)不會被提升。 ?
? ? ?定義函數(shù)的方式
? ? ?1、函數(shù)聲明
? ? ?function sum( ?){ ? }
? ? 2、函數(shù)表達(dá)式
? ? var sum=function( ?){ ?}
首先,window.onload事件是在整個頁面包括dom結(jié)構(gòu)、圖片等等全部加載完成之后才會觸發(fā)。
其次,HTML加載時由上往下的,在HTML加載的時候,遇到function關(guān)鍵字,聲明一個函數(shù)的時候,就會在內(nèi)存中開辟一個新的空間來對函數(shù)進(jìn)行存儲,方便以后進(jìn)行調(diào)用。
所以,當(dāng)將function fun(){}寫到window.onload()=function(){}內(nèi)部的時候,需要整個頁面加載完成的之后,才聲明這個函數(shù),也就意味著,當(dāng)HTML加載到οnclick="fun()"的時候,window.οnlοad=function(){}里面的函數(shù)f還沒有被聲明,這時候內(nèi)存中就找不到function fun(),于是就會報錯。
那么,將function fun()移到window.onload()=function(){}外,則HTML加載到<head></head>的時候就會聲明函數(shù)f了,所以進(jìn)行onclick綁定的時候就能夠在內(nèi)存中找到fun()并進(jìn)行調(diào)用。這是方法3成功的原因
而方法2中的失敗,當(dāng)整個頁面加載完畢后,給a標(biāo)簽添加刪除按鈕,而此時的onclick事件需要一個全局函數(shù),當(dāng)?shù)诙N方法,改為 function del(obj){} 在onload標(biāo)簽,就不再是全局函數(shù),所以報錯了
onclick
?執(zhí)行的是?window
?環(huán)境中的方法,所以:將?this
?中的方法關(guān)聯(lián)到?window
?上即可。
created() {
window.openPerson = this.openPerson
}
οnclick=“方法名”
<div οnclick="save()"></div>
但是今天我遇到一個問題,在js中寫的方法調(diào)不到
//正確的是
save=function(){}
//錯誤的
var save=function(){}
function save(){}
有這么幾種情況:
1、在函數(shù)中寫的方法?
?$(function () {
? ? ? ? function save() {? ? ?
? ? ? ? }
? ? })
?原因:save()他不是全局的方法了,onclick自然找不到他
解決方案:將save()設(shè)置為全局的
$(function () {
? ? ? ? window.save= function () {
? ? ? ? }
? ? })
vue報錯: error ‘xxx‘ is defined but never used no-unused-vars
報錯原因:因?yàn)榇罱ǖ膙ue項(xiàng)目選擇了eslint校驗(yàn)規(guī)范->就是你定義了某個變量,但是你沒有使用它.eslint規(guī)范就是你要么不定義,要么定義了就一定得用.
ESLint 是在 ECMAScript/JavaScript 代碼中識別和報告模式匹配的工具,它的目標(biāo)是保證代碼的一致性和避免錯誤.
在許多方面,它和JSLint、JSHint相似.
解決方法:
在package.json文件內(nèi)加入如下代碼(保存后重啟項(xiàng)目!!!)
"rules": {
? ? "generator-star-spacing": "off",
? ? "no-tabs":"off",
? ? "no-unused-vars":"off",
? ? "no-console":"off",
? ? "no-irregular-whitespace":"off",
? ? "no-debugger": "off"
},
在運(yùn)行npm run serve時報錯 ?Module not found: Error: Can't resolve 'axios'
原因:沒有安裝axios插件 在運(yùn)行項(xiàng)目的地方npm install --save axios文章來源:http://www.zghlxwxcb.cn/news/detail-438198.html
解決辦法?
npm install --save axios文章來源地址http://www.zghlxwxcb.cn/news/detail-438198.html
到了這里,關(guān)于報錯問題修改 Vue 項(xiàng)目報錯:‘$‘ is not defined ( no-undef )的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!