Tại sao không phải là tên biến JavaScript hợp lệ ◎ ܫ và?


728

Tôi nhận thấy rằng trong Internet Explorer (nhưng thật không may, không phải trong các trình duyệt khác mà tôi đã kiểm tra), bạn có thể sử dụng một số tên biến Unicode. Điều này làm cho ngày của tôi và tôi rất vui mừng khi tôi có thể viết mã Unicode đầy thú vị như thế này:

var ктоείναι草泥马 = "You dirty horse.",
    happynmatpeia = ":)Yay!",
    _ = "emoticon";

alert(ктоείναι草泥马 + happynmatpeia + _ಠ);

Đối với một số lý do, mặc dù, ◎ܫ◎, ♨_♨không phải là tên biến hợp lệ.

Tại sao làm ಠ_ಠ草泥马làm việc, nhưng ◎ܫ◎, ♨_♨không?

EDIT: Kiểm tra nó trong trình duyệt của bạn trên JSFiddle . Tôi đã thử nghiệm nó trong Internet Explorer 9, Chrome, Firefox và Opera. Cho đến nay, nó dường như chỉ hoạt động trong Internet Explorer 9. (Tôi không biết về Internet Explorer 8 trở xuống.) Hãy cho tôi biết nếu nó hoạt động trong một trình duyệt khác.


223
@JamWaffles Cho vui! Hoặc, nếu bạn thích, tôi sẽ tạo ra một số lý do khập khiễng i18n vì muốn làm điều này.
Peter Olson

36
Hà! Không, vui là một lý do tuyệt vời! Tôi phải nói rằng, ví dụ của bạn trông khá vui nhộn, đặc biệt ಠ_ಠ.
Bojangles

14
Tôi thích nó: PI nên sử dụng những thứ này cho bài tập về nhà của tôi XD
Joseph Marikle

27
@JamWaffles: Tôi không biết, tôi đã thấy một vài nhiệm vụ thay đổi trong thời gian khiến tôi muốn làm ಠ_ಠmặt ... nó sẽ được mô tả hoàn hảo trong những trường hợp đó ....
David nói phục hồi Monica

26
Nhắc nhở tôi về một tập của yayQuery , nơi Pete Higgins (dojo) đã nói về việc cố gắng sử dụng như một tên var bởi vì nó có giá trị hơn$
gnarf

Câu trả lời:


613

ಠ_ಠ và chỉ chứa "các chữ cái" được sử dụng trong bảng chữ cái thực tế; đó là, là một biểu tượng từ bảng chữ cái Kannada và bao gồm các ký tự Trung Quốc.

Và, tuy nhiên, là các ký hiệu thuần túy; chúng không được liên kết với bất kỳ bảng chữ cái.

Các tiêu chuẩn ECMAScript, chương 7,6 (trong đó tất cả các trình duyệt trừ Internet Explorer đang theo dõi), các quốc gia mà một định danh phải bắt đầu với một trong những điều sau đây.

  • một chữ cái Unicode
  • $ hoặc là _
  • \ theo sau là một chuỗi thoát unicode.

Các ký tự sau của mã định danh phải là một trong những ký tự sau.

  • bất kỳ ký tự nào được phép khi bắt đầu
  • một dấu hiệu kết hợp Unicode
  • một chữ số Unicode
  • một dấu chấm nối Unicode
  • một người không tham gia chiều rộng
  • một phép nối có độ rộng bằng không

IE vượt quá tiêu chuẩn và đủ cho phép để cho phép một số ký hiệu, chẳng hạn như.

một công cụ sẽ cho bạn biết nếu bất kỳ chuỗi nào bạn nhập là tên biến JavaScript hợp lệ theo ECMAScript 5.1 và Unicode 6.1.


110
Wow, các biến JS được phép bao gồm các ký tự có độ rộng bằng không? Điều này cung cấp một số khả năng che giấu đáng sợ ... Cảm ơn chúa vì không có Cuộc thi Javascript ngầm .
Daniel Wagner

3
@ David: Các zero-width joinerphi joiner nhân vật đặc biệt ở chỗ chúng ảnh hưởng đến việc vẽ của nhân vật liền kề trong ví dụ tiếng Ả Rập. Đối với các tập lệnh như vậy, chúng cần phải được trình bày để đảm bảo hiển thị đúng văn bản dự định.
Michael Madsen

4
Ồ, tôi biết những gì họ làm. Tôi đoán câu hỏi thực sự là liệu aba<ZWNJ>blà tên biến khác nhau hay cùng một tên. Nếu chúng khác nhau, điều đó rất lạ và có thể khai thác; nếu chúng giống nhau, thì điều đó có ý nghĩa và ZWNJ thực sự chỉ là một bản hack kết xuất chứ không phải là một phần có ý nghĩa của tên biến.
Daniel Wagner

15
@Daniel Chỉ cần thử điều này: var ab = 'ab'; a‌b = 'a<ZWNJ>b'; alert(ab);và nó đã cảnh báo abvới cảnh báo này: "Cảnh báo: gán cho biến không được khai báo ab". Vì nhiều trang chứa đầy những cảnh báo như vậy, nó có thể sẽ không được chú ý, ngay cả bởi một người thực sự đang nhìn vào bảng điều khiển lỗi. Tôi đang sử dụng Notepad ++ với chế độ "Hiển thị tất cả các ký tự" và nó hoàn toàn không hiển thị ZWNJ. Tôi đã phải sử dụng trình soạn thảo hex để đưa nó vào.
MatrixFrog

5
Có vẻ như Stackoverflow đã chỉnh sửa các ký tự ZWNJ thực tế từ nhận xét của tôi, nhưng tôi nghĩ bạn có thể thấy những gì tôi muốn nói. Tôi nên đề cập rằng tôi đang ở trên Aurora, trong đó (đối với những người không quen thuộc với "kênh" của Mozilla) là bản xem trước của Firefox 8. Ngoài ra, tại sao tôi không nghĩ sẽ đưa đoạn trích này lên jsfiddle ?
MatrixFrog

79

EcmaScript 262, phần 7.6 nói rằng các tên phải bắt đầu bằng $, _ hoặc một chữ cái Unicode và sau đó có thể chứa các ký tự đó hoặc các dấu kết hợp Unicode, chữ số Unicode hoặc dấu chấm câu kết nối Unicode (và một vài ký tự điều khiển định dạng là ngôn ngữ cụ thể.)

Vì vậy, sự khác biệt giữa các định danh được phép và không được phép trong các trường hợp của bạn có lẽ là liệu nhân vật chính có được coi là "chữ cái" hay không.


1
Vì vậy, một lá thư unicode nhưng không? Và ngay cả như vậy, nó dường như không hoạt động trong các trình duyệt khác ngoài IE, vì vậy tôi sẽ tưởng tượng tiêu chuẩn ECMAScript sẽ không có ý nghĩa nhiều trong trường hợp này.
Peter Olson

Tôi hy vọng những gì chúng ta thấy ở đây là EcmaScript đang cố gắng làm cho ngôn ngữ dễ tiếp cận hơn với những người không nói tiếng Anh. Tôi hy vọng sẽ thấy hỗ trợ trong các trình duyệt khác xuất hiện trong khóa học do.
broofa

16
Ký tự vi phạm và đó là một BULLSEYE U + 25CE nằm trong Danh mục So = Biểu tượng, khác, và do đó thực sự không phải là một chữ cái Unicode . Ý bạn là gì "nó không hoạt động trong các trình duyệt khác ngoài IE?"
Ray Toal

@Ray xem liên kết jsFiddle trong câu hỏi của tôi và nhận xét đi kèm với nó.
Peter Olson

8
Tôi đã thử fiddle, và cảm ơn vì đã đăng nó. Biến đầu tiên là ổn trong Chrome, nhưng biến thứ hai thì không, bởi vì nó chứa ký tự khuôn mặt hạnh phúc U + 263A. Đây là một biểu tượng từ danh mục Vì vậy, và Chrome đang tuân theo tiêu chuẩn ECMAScript cấm các ký tự này trong các định danh. Vì vậy, nhận xét đầu tiên của bạn cho câu trả lời này, tôi nghĩ, ngay trên; IE không tuân theo tiêu chuẩn nếu nó cho phép biến đó được khai báo.
Ray Toal

49

Để trích dẫn tên biến JavaScript hợp lệ , bài viết của tôi tóm tắt các phần đặc tả có liên quan:

Một định danh phải bắt đầu với $, _hoặc bất kỳ ký tự trong các danh mục Unicode “viết hoa chữ cái (Lu)” , “Chữ thường chữ cái (LL)” , “Titlecase chữ cái (Lt)” , “Modifier chữ cái (Lm)” , “lá thư khác ( Lo) , hay Số thư (Nl) .

Phần còn lại của chuỗi có thể chứa các ký tự tương tự, cộng với bất kỳ U + 200C zero chiều rộng không joiner ký tự, U + 200D zero joiner chiều rộng ký tự, và các nhân vật trong các danh mục Unicode “Non-khoảng cách đánh dấu (Mn)” , “Spacing kết hợp mark (Mc) Đây , số thập phân số thập phân (Nd) , hoặc dấu chấm nối (Pc) .

Tôi cũng đã tạo một công cụ sẽ cho bạn biết nếu bất kỳ chuỗi nào bạn nhập là tên biến JavaScript hợp lệ theo ECMAScript 5.1 và Unicode 6.3:

Trình xác thực tên biến JavaScript


PS Nếu bạn tóm tắt tất cả các quy tắc này trong một biểu thức chính quy duy nhất chỉ có ASCII cho JavaScript , thì nó sẽ dài hơn 9.000 ký tự . Đây là:

// ECMAScript 5.1 / Unicode v6.3.0:
/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|null|this|true|void|with|break|catch|class|const|false|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[\x24A-Z\x5Fa-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC][\x240-9A-Z\x5Fa-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]*$/

27
Đó là hơn 9.000 !
Chiru

2
Tôi chỉ phát hiện ra rằng đó var await = 123là hoàn toàn hợp pháp!
Cristian Traìna

9

Đối với thuộc tính đối tượng, bạn có thể sử dụng cú pháp dấu ngoặc vuông:

window["◎ܫ◎"] = true;
alert(window["◎ܫ◎"]); // alerts "true"

4
Không giỏi làm những điều tương tự. Bạn không thể khai báo một biến phạm vi hàm theo cách này; nó chỉ hoạt động cho toàn cầu, vì chúng là thuộc tính của đối tượng toàn cầu. Tôi cho rằng nếu bạn thực sự thực sự muốn, bạn có thể nói var local = { '◎ܫ◎' => true, (other vars...) };... nhưng có lẽ nó không đáng để gặp rắc rối.
cHao
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.