Mã trong câu hỏi là ở đây:
var $item = $(this).parent().parent().find('input');
Mục đích của ký hiệu đô la trong tên biến, tại sao không loại trừ nó?
document.querySelector
vàdocument.querySelectorAll
Mã trong câu hỏi là ở đây:
var $item = $(this).parent().parent().find('input');
Mục đích của ký hiệu đô la trong tên biến, tại sao không loại trừ nó?
document.querySelector
vàdocument.querySelectorAll
Câu trả lời:
Một '$' trong một biến có nghĩa là không có gì đặc biệt đối với trình thông dịch, giống như dấu gạch dưới.
Từ những gì tôi đã thấy, nhiều người sử dụng jQuery (đó là mã ví dụ của bạn trông như thế nào) có xu hướng tiền tố biến có chứa một đối tượng jQuery có $ để chúng dễ dàng được xác định và không bị lẫn với các số nguyên .
Hàm ký hiệu đô la $()
trong jQuery là một hàm thư viện thường được sử dụng, vì vậy một tên ngắn là mong muốn.
var $=function(){}
rất giống như làm var a=function(){}
.
jQuery(document).ready(function($){
... Sau đó, $ được sử dụng bên trong triển khai hàm.
$scope
$ là một trong các ký tự trong tên đó. Giống như khi bạn cất cánh e
vào cuối $scope
, nó sẽ không hoạt động, do đó, việc lấy ý $
chí cũng không hiệu quả. Trong trường hợp bạn thấy một cái gì đó như $( "a" ).addClass( "test" )
, ký hiệu đô la là toàn bộ tên của bất cứ thứ gì.
Dấu $ là một định danh cho các biến và hàm.
Điều đó có một lời giải thích rõ ràng về những gì ký hiệu đô la là dành cho.
Đây là một lời giải thích khác: http://www.vcarrer.com/2010/10/about-dollar-sign-in-javascript.html
Ký hiệu đô la được đối xử giống như một chữ cái bình thường hoặc gạch dưới ( _
). Nó không có ý nghĩa đặc biệt đối với người phiên dịch.
Không giống như nhiều ngôn ngữ tương tự, số nhận dạng (như tên chức năng và tên biến) trong Javascript không chỉ chứa các chữ cái, số và dấu gạch dưới mà còn có thể chứa các ký hiệu đô la . Họ thậm chí được phép bắt đầu bằng một ký hiệu đô la, hoặc chỉ bao gồm ký hiệu đô la và không có gì khác.
Như vậy $
là một hàm hợp lệ hoặc tên biến trong Javascript.
Tại sao bạn muốn có một ký hiệu đô la trong một định danh?
Cú pháp không thực sự thực thi bất kỳ việc sử dụng cụ thể nào của ký hiệu đô la trong một mã định danh, do đó, tùy thuộc vào cách bạn muốn sử dụng nó. Trước đây, người ta thường khuyên nên bắt đầu một mã định danh chỉ có ký hiệu đô la trong mã được tạo - nghĩa là mã được tạo không phải bằng tay mà bằng một trình tạo mã.
Trong ví dụ của bạn, tuy nhiên, điều này dường như không phải là trường hợp. Có vẻ như ai đó chỉ cần đặt một ký hiệu đô la khi bắt đầu cho vui - có lẽ họ là một lập trình viên PHP đã làm điều đó theo thói quen, hoặc một cái gì đó. Trong PHP, tất cả các tên biến phải có ký hiệu đô la trước mặt chúng.
Ngày nay có một ý nghĩa phổ biến khác cho ký hiệu đô la trong trình thông dịch: đối tượng jQuery, có tên chỉ bao gồm một ký hiệu đô la duy nhất ( $
). Đây là một quy ước được mượn từ các khung Javascript trước đó như Prototype và nếu jQuery được sử dụng với các khung như vậy, sẽ có một xung đột tên vì cả hai sẽ sử dụng tên $
(jQuery có thể được cấu hình để sử dụng một tên khác cho đối tượng toàn cầu của nó) . Javascript không có gì đặc biệt cho phép jQuery sử dụng ký hiệu đô la duy nhất làm tên đối tượng của nó; như đã đề cập ở trên, nó chỉ đơn giản là một tên định danh hợp lệ khác.
var $j = jQuery.noConflict();
bây giờ $ j là đối tượng jQuery.
Ký hiệu đô la được sử dụng trong bản mô tả 2015-2016 dưới dạng 'mẫu chữ'. Thí dụ:
var a = 5;
var b = 10;
console.log(`Sum is equal: ${a + b}`); // 'Sum is equlat: 15'
Ví dụ hoạt động ở đây: https://es6console.com/j3lg8xeo/ Lưu ý dấu hiệu này " ` ", đây không phải là dấu ngoặc kép bình thường.
Bạn cũng có thể gặp $ khi làm việc với thư viện jQuery .
$ đăng trong Biểu thức chính quy có nghĩa là kết thúc dòng.
Không có lý do. Có lẽ người đã mã hóa nó đến từ PHP. Nó có tác dụng tương tự như khi bạn đặt tên cho nó là "_item" hoặc "item" hoặc "item $$".
Là một hậu tố (như "item $", phát âm là "item"), nó có thể biểu thị một yếu tố có thể quan sát được như một yếu tố DOM như một quy ước gọi là "Ký hiệu Phần Lan" tương tự như Ký hiệu Hungary.
Dưới đây là một lời giải thích video ngắn hay: https://www.youtube.com/watch?v=Acm-MD_6934
Theo Ecma Tên định danh quốc tế là các mã thông báo được diễn giải theo ngữ pháp được đưa ra trong phần Định danh của người dùng trong chương 5 của tiêu chuẩn Unicode, với một số sửa đổi nhỏ. Mã định danh là Tên định danh không phải là ReservedWord ( xem 7.6.1 ). Ngữ pháp định danh Unicode dựa trên cả hai loại ký tự quy phạm và thông tin được chỉ định bởi Tiêu chuẩn Unicode. Các ký tự trong các danh mục được chỉ định trong phiên bản 3.0 của tiêu chuẩn Unicode phải được xử lý như trong các danh mục đó bởi tất cả các triển khai ECMAScript tuân thủ. Tiêu chuẩn này chỉ định bổ sung ký tự cụ thể:
Ký hiệu đô la ($) và dấu gạch dưới (_) được cho phép ở bất cứ đâu trong Mã định danh .
Đọc thêm có thể được tìm thấy trên: http : //www.ecma-i Intl.org/ecma-262/5.1/#sec-7.6
Ecma International là một hiệp hội ngành được thành lập vào năm 1961 và dành riêng cho việc tiêu chuẩn hóa Công nghệ Thông tin và Truyền thông (CNTT-TT) và Điện tử Tiêu dùng (CE).
Khi sử dụng jQuery, việc sử dụng $
ký hiệu làm tiền tố trong tên biến chỉ đơn thuần là theo quy ước; nó hoàn toàn là tùy chọn và chỉ dùng để chỉ ra rằng biến đó chứa một đối tượng jQuery, như trong ví dụ của bạn.
Điều này có nghĩa là khi một hàm jQuery khác cần được gọi trên đối tượng, bạn sẽ không cần phải bọc nó $()
lại. Ví dụ, so sánh những điều này:
// the usual way
var item = $(this).parent().parent().find('input');
$(item).hide(); // this is a double wrap, but required for code readability
item.hide(); // this works but is very unclear how a jQuery function is getting called on this
// with $ prefix
var $item = $(this).parent().parent().find('input');
$item.hide(); // direct call is clear
$($item).hide(); // this works too, but isn't necessary
Với $
tiền tố, các biến đã giữ các đối tượng jQuery có thể nhận ra ngay lập tức và mã dễ đọc hơn và loại bỏ gói / nhiều gói với $()
.