最近,我一直在學習JavaScript。我遇到一些JavaScript錯誤,說「_ _未定義」 - 這意味着什麼,爲什麼這會出現?我對或多或少的解釋了爲什麼會出現這種錯誤,以及可以採取什麼措施來解決這個問題,或者爲什麼它通常首先發生。當使用JavaScript時,某些東西是「未定義」時,這意味着什麼?
例如:這裏有兩個函數(validate和onSearch)---當我嘗試運行「onSearch」時,我在控制檯中獲得了Ran SEARCH ... trace,但是它消失了。另外,當我通過JSHero(試圖調試)運行它時,它告訴我「onSearch」是未定義的,我很好奇爲什麼。
我已經有一些使用ActionScript進行開發的經驗,但我完全不熟悉JavaScript。我真的很感謝你的意見和解釋,這實際上意味着什麼。謝謝。
function validate(query){
console.log("Ran VALIDATE...");
// Trim whitespace from start and end of search query
while(query.charAt(0) === " "){
query = query.substring(1, query.length);
};
while(query.charAt(query.length-1) === ""){
query = query.substring(0, query.length-1);
};
console.log("Query length:",query.length);
console.log("Beginning conditional...");
// Check search length, must have 3 characters
if(query.length < 3){
console.log("Display alert...");
alert("Your search query is too small, try again.");
// (DO NOT FIX THE LINE DIRECTLY BELOW)
searchInput.focus();
}else{
console.log("Searching query...");
onSearch(query);
};
};
// Finds search matches
function onSearch(query){
//var search = function(query){
console.log("Ran SEARCH...");
// split the user's search query string into an array
var queryArray = query.join(" ");
// array to store matched results from database.js
var results = [];
// loop through each index of db array
for(var i=0, j=db.length; i<j; i++){
// each db[i] is a single video item, each title ends with a pipe "|"
// save a lowercase variable of the video title
var dbTitleEnd = db[i].indexOf('|');
var dbitem = db[i].tolowercase().substring(0, dbTitleEnd);
// loop through the user's search query words
// save a lowercase variable of the search keyword
for(var ii=0, jj=queryArray.length; ii<jj; ii++){
var qitem = queryArray[ii].tolowercase();
// is the keyword anywhere in the video title?
// If a match is found, push full db[i] into results array
var compare = dbitem.indexOf(qitem);
console.log("Compare:",compare);
if(compare != -1){
results.push(db[i]);
};
};
};
console.log("Hello");
results.sort();
// Check that matches were found, and run output functions
if(results.length === 0){
noMatch();
}else{
showMatches(results);
};
};
編輯** 「DB」 在外部文件中定義。它只是一個URL數組。它仍然說它沒有被很好地定義,這就是我所要求的。
你如何定義 1)可變 2)功能
我仍然不是在下面這將引發一個錯誤。我會編輯我的帖子以獲得更準確的描述。 – Lindsay