Hướng dẫn why is my variable not defined javascript? - tại sao biến của tôi không được định nghĩa javascript?

Đôi khi tôi đã gặp vấn đề này nhưng vẫn không biết điều gì gây ra nó.

Tôi có tập lệnh này trong trang:

$[function[]{
    var value = "10";
}];

Nhưng trình duyệt nói "Tham chiếu HERROR: Giá trị không được xác định". Tuy nhiên, nếu tôi truy cập bảng điều khiển trình duyệt và nhập

10

hoặc

var value = "10";

Một trong số họ có thể trả lại 10. Vấn đề với tập lệnh của tôi là gì?

miken32

40.6K16 Huy hiệu vàng100 Huy hiệu bạc140 Huy hiệu đồng16 gold badges100 silver badges140 bronze badges

Hỏi ngày 11 tháng 7 năm 2013 lúc 1:19Jul 11, 2013 at 1:19

0

Nó được tuyên bố bên trong một đóng cửa, điều đó có nghĩa là nó chỉ có thể được truy cập ở đó. Nếu bạn muốn có một biến có thể truy cập được trên toàn cầu, bạn có thể xóa var:

$[function[]{
    value = "10";
}];
value; // "10"

Điều này tương đương với việc viết

10
0.

Đã trả lời ngày 11 tháng 7 năm 2013 lúc 1:22Jul 11, 2013 at 1:22

McGarnaglemcgarnagleMcGarnagle

99.6K30 Huy hiệu vàng225 Huy hiệu bạc259 Huy hiệu Đồng30 gold badges225 silver badges259 bronze badges

5

Các biến chỉ có sẵn trong phạm vi bạn đã xác định chúng. Nếu bạn xác định một biến bên trong một hàm, bạn sẽ không thể truy cập nó bên ngoài nó.

Xác định biến với var bên ngoài hàm [và tất nhiên là trước đó] và sau đó gán

10
2 cho nó bên trong chức năng:

var value;
$[function[] {
  value = "10";
}];
console.log[value]; // 10

Lưu ý rằng bạn không nên bỏ qua dòng đầu tiên trong mã này [

10
3], vì nếu không, bạn đang gán giá trị cho biến không xác định. Đây là thực hành mã hóa xấu và sẽ không hoạt động ở chế độ nghiêm ngặt. Xác định một biến [
10
4] và gán giá trị cho một biến [
10
5] là hai điều khác nhau. Bạn không thể gán giá trị cho biến mà bạn chưa xác định.

Nó có thể không liên quan ở đây, nhưng

10
6 là một lối tắt cho
10
7, thực hiện một chức năng ngay khi tài liệu được tải. Nếu bạn muốn thực hiện một cái gì đó ngay lập tức, bạn không cần nó, nếu không hãy cẩn thận rằng nếu bạn chạy nó trước khi DOM tải, giá trị sẽ là
10
8 cho đến khi nó được tải, do đó,
10
9 được đặt ngay sau khi
10
6 sẽ trả về
10
8. Nói cách khác, nó sẽ thực hiện theo thứ tự sau:

var value;
console.log[value];
value = "10";

Xem thêm:

  • Phạm vi của các biến trong JavaScript là gì?
  • Tôi đã nghe các biến toàn cầu là xấu, tôi nên sử dụng giải pháp thay thế nào?

Đã trả lời ngày 29 tháng 12 năm 2015 lúc 8:55Dec 29, 2015 at 8:55

Có lỗi [trong chức năng init] với mã sau;

"use strict" ;

var hdr ;

function init[]{ // called on load
    hdr = document.getElementById["hdr"];
}

... Trong khi sử dụng trình duyệt chứng khoán trên danh tiếng Samsung Galaxy [điện thoại crap làm cho nó trở thành một người thử nghiệm tốt] - useragent; Mozilla/5.0 [Linux; U; Android 4.1.2; EN-GB; GT-S6810P Build/JZO54K] AppleWebKit/534.30 [Khtml, như Gecko] phiên bản/4.0 Mobile Safari/534.30

Mã tương tự hoạt động ở mọi nơi mà tôi đã thử bao gồm trình duyệt chứng khoán trên điện thoại HTC cũ hơn - Useragent; Mozilla/5.0 [Linux; U; Android 2.3.5; en-GB; htc_wildfires_a510e build/grj90] applewebkit/533.1 [khtml, như Gecko] phiên bản/4.0 Mobile Safari/533.1

Cách khắc phục cho điều này là thay đổi

var hdr ;

đến

var hdr = null ;

Đã trả lời ngày 11 tháng 1 năm 2017 lúc 15:25Jan 11, 2017 at 15:25

BobbobBob

1.48916 huy hiệu bạc24 Huy hiệu đồng16 silver badges24 bronze badges

Làm thế nào để bạn kiểm tra xem biến JavaScript có được xác định không?

Toán tử loại sẽ kiểm tra xem một biến có được xác định hay không. Toán tử typeof không ném ngoại lệ tham chiếu khi nó được sử dụng với biến không được khai báo. Loại null sẽ trả về một đối tượng.

Làm việc với ngôn ngữ lập trình thường khiến người ta gặp lỗi thường xuyên, nhưng biết cách tìm lỗi và cách khắc phục lỗi không gì khác hơn là kỹ năng. Lỗi tham chiếu JavaScript là một lỗi khá phổ biến mà mọi người gặp phải [đặc biệt là người mới bắt đầu].

Lỗi này chỉ đơn giản có nghĩa là tồn tại một dòng như vậy trong mã đang nói với trình biên dịch truy cập một biến hoặc một đối tượng không có địa chỉ hoặc vị trí bộ nhớ. Một kịch bản như vậy xảy ra khi biến tập trung ở đây chưa được khởi tạo hoặc khai báo.

Nếu biến không được khai báo, thì nó sẽ không chiếm vị trí bộ nhớ hoặc địa chỉ. Theo tuyên bố này, thật dễ dàng để kết luận rằng sự tham chiếu của người dùng này - biến không được xác định là xảy ra khi biến mà lập trình viên đang cố gắng truy cập trước đó chưa được khai báo trước khi tuyên bố gây ra lỗi.

Thông báo lỗi của tham chiếu của mạng - biến không được định nghĩa

Thông báo lỗi của thông báo tham chiếu, thoạt nhìn, có vẻ rất khó khăn vì nó trông giống như thế này:

Thông báo lỗi chứa khoảng 10 dòng khác nhau và tất cả các dòng này kể một câu chuyện khác nhau về lý do tại sao lỗi được gây ra. Bây giờ, nếu lập trình viên truy cập các tệp được liên kết trong 10 dòng này và cố gắng tìm ra lỗi, anh ta sẽ thấy mình trong một mê cung.



Phá vỡ thông báo lỗi của tài liệu tham khảo trên mạng - biến không được xác định

  • Hãy xem ảnh chụp màn hình sau của cùng một thông báo lỗi đã được sử dụng trong phần trước: This is the JavaScript statement that has caused the error
  • Hãy để giải thích các dấu hiệu được thực hiện trên ảnh chụp màn hình: This is the variable whose reference the compiler couldn’t find
  • 1: Đây là câu lệnh JavaScript đã gây ra lỗi The file name and the line number of the statement which caused the error
  • 2: Đây là biến có tài liệu tham khảo mà trình biên dịch không thể tìm thấy Files of the environment that led to error [Ignore these lines]

3: Tên tệp và số dòng của câu lệnh gây ra lỗi

functionAddnums [num1, num2] {returnNum1 + num2;} result = addNums [5, 6];[num1, num2] {
returnnum1 + num2;
}
result = addNums[5 , 6];

Console.log [kết quả];log[results];

Các dòng trên làm như sau:

  • Tạo một hàm addnums trả về tổng của hai số được truyền bên trong các đối số của nóaddNums which returns the sum of two number passed inside its arguments
  • Sử dụng hàm để tính tổng 5 và 6 và lưu trữ giá trị trả về trong biến kết quảresult variable
  • In kết quả bằng cách sử dụng biến kết quảresults variable

Thực hiện mã tạo ra thông báo lỗi sau:

Nó nói rằng biến kết quả của người Viking có thể được tham chiếu và chỉ vào dòng số 6. Bây giờ, so sánh dòng 6 và dòng 4:“results” variable couldn’t be referenced and points to the line number 6. Now, compare line 6 and line 4:

result = addNums [5+6]; // dòng số 4= addNums[5 + 6]; // Line Number 4

Console.log [Kết quả]; // Lòng số 6log[results]; // Line number 6

Rõ ràng là lỗi được gây ra do lỗi chính tả của tên của biến trong dòng số 6. Sửa lỗi chính tả của định danh có giá trị trả về của hàm thành:

result = addNums [5+6]; // dòng số 4= addNums[5 + 6]; // Line Number 4

Console.log [Kết quả]; // Lòng số 6log[result]; // Line number 6

Rõ ràng là lỗi được gây ra do lỗi chính tả của tên của biến trong dòng số 6. Sửa lỗi chính tả của định danh có giá trị trả về của hàm thành:

Console.log [result]; // dòng số 6

Sau đó, thực hiện chương trình và quan sát đầu ra sau:

Đầu ra cho thấy chương trình hiện đang hoạt động mà không có bất kỳ lỗi nào

Sự kết luận

Biến tham chiếu JavaScript - Biến không được xác định là cố gắng truy cập một biến bằng định danh của nó chưa được khai báo trước câu lệnh đó. Điều này có thể được gây ra bởi lỗi chính tả hoặc đơn giản là thiếu toàn bộ một tuyên bố trong đó lập trình viên được cho là tuyên bố biến. Cách khắc phục phương thức này là chuyển đến số dòng được đề cập trong thông báo lỗi và sửa tên của biến hoặc khai báo biến trước câu lệnh đó.

Làm thế nào để bạn sửa chữa không được xác định JavaScript?

Để giải quyết lỗi này: Tải thư viện jQuery ở đầu tất cả các tệp/tập lệnh JavaScript của bạn sử dụng $ hoặc jQuery, để $ có thể được xác định trong tập lệnh.Load the jQuery library at the beginning of all your javascript files/scripts which uses $ or jQuery, so that $ can be identified in scripts .

Tại sao biến không được xác định?

Lỗi này có nguyên nhân và giải pháp sau: Bạn đã sử dụng một tuyên bố rõ ràng tùy chọn để yêu cầu khai báo rõ ràng các biến, nhưng bạn đã sử dụng một biến mà không cần khai báo.You used an Option Explicit statement to require the explicit declaration of variables, but you used a variable without declaring it.

Làm thế nào để bạn tuyên bố một biến trong JavaScript?

Luôn luôn khai báo các biến JavaScript với var, let hoặc const.Từ khóa VAR được sử dụng trong tất cả các mã JavaScript từ năm 1995 đến 2015. Từ khóa LET và const đã được thêm vào JavaScript vào năm 2015. Nếu bạn muốn mã của mình chạy trong các trình duyệt cũ hơn, bạn phải sử dụng VAR.var , let , or const . The var keyword is used in all JavaScript code from 1995 to 2015. The let and const keywords were added to JavaScript in 2015. If you want your code to run in older browsers, you must use var .

Làm thế nào để bạn kiểm tra xem biến JavaScript có được xác định không?

Toán tử loại sẽ kiểm tra xem một biến có được xác định hay không.Toán tử typeof không ném ngoại lệ tham chiếu khi nó được sử dụng với biến không được khai báo.Loại null sẽ trả về một đối tượng. will check whether a variable is defined or not. The typeof operator doesn't throw a ReferenceError exception when it is used with an undeclared variable. The typeof null will return an object.

Bài Viết Liên Quan

Chủ Đề