Hướng dẫn is string a type in javascript? - chuỗi có phải là một loại trong javascript không?

Tôi sẽ đi một con đường khác đến phần còn lại ở đây, mà cố gắng cho biết một biến là một cụ thể, hoặc một thành viên của một tập hợp cụ thể, các loại. JS được xây dựng trên Ducktyping; Nếu một cái gì đó quacks như một chuỗi, chúng ta có thể và nên sử dụng nó như một chuỗi.
JS is built on ducktyping; if something quacks like a string, we can and should use it like a string.

7 có phải là một chuỗi không? Vậy tại sao /\d/.test(7) hoạt động? {toString:()=>('hello there')} có phải là một chuỗi không? Vậy tại sao ({toString:()=>('hello there')}) + '\ngeneral kenobi!' hoạt động? Đây không phải là câu hỏi về việc làm trên, vấn đề là họ làm.
Is {toString:()=>('hello there')} a string? Then why does ({toString:()=>('hello there')}) + '\ngeneral kenobi!' work?
These aren't questions about should the above work, the point is they do.

Vì vậy, tôi đã thực hiện một chức năng duckyString() bên dưới tôi kiểm tra nhiều trường hợp không được phục vụ bởi các câu trả lời khác. Đối với mỗi mã:
Below I test many cases not catered for by other answers. For each the code:

  • Đặt một biến giống như chuỗi
  • Chạy một hoạt động chuỗi giống hệt nhau trên nó và một chuỗi thực để so sánh các đầu ra (chứng minh chúng có thể được đối xử như chuỗi)
  • Chuyển đổi giống như chuỗi thành một chuỗi thực để hiển thị cho bạn duckyString() để bình thường hóa các đầu vào cho mã mong đợi chuỗi thực
text = 'hello there';
out(text.replace(/e/g, 'E') + ' ' + 'hello there'.replace(/e/g, 'E'));
out('Is string? ' + duckyString(text) + '\t"' + duckyString(text, true) + '"\n');

text = new String('oh my');
out(text.toUpperCase() + ' ' + 'oh my'.toUpperCase());
out('Is string? ' + duckyString(text) + '\t"' + duckyString(text, true) + '"\n');

text = 368;
out((text + ' is a big number') + ' ' + ('368' + ' is a big number'));
out('Is string? ' + duckyString(text) + '\t"' + duckyString(text, true) + '"\n');

text = ['\uD83D', '\uDE07'];
out(text[1].charCodeAt(0) + ' ' + '😇'[1].charCodeAt(0));
out('Is string? ' + duckyString(text) + '\t"' + duckyString(text, true) + '"\n');

function Text() { this.math = 7; }; Text.prototype = {toString:function() { return this.math + 3 + ''; }}
text = new Text();
out(String.prototype.match.call(text, '0') + ' ' + text.toString().match('0'));
out('Is string? ' + duckyString(text) + '\t"' + duckyString(text, true) + '"\n');

Điều này nằm trong cùng một tĩnh mạch với

hEllo thErE hEllo thErE
Is string? true "hello there"

OH MY OH MY
Is string? true "oh my"

368 is a big number 368 is a big number
Is string? true "368"

56839 56839
Is string? true "😇"

0 0
Is string? true "10"
1 trái ngược với
hEllo thErE hEllo thErE
Is string? true "hello there"

OH MY OH MY
Is string? true "oh my"

368 is a big number 368 is a big number
Is string? true "368"

56839 56839
Is string? true "😇"

0 0
Is string? true "10"
2 và thử nghiệm nếu một cái gì đó giống như mảng thay vì bắt buộc một mảng thực tế. Đối tượng jQuery; họ có mảng không? Không. Họ có đủ tốt không? Vâng, bạn có thể chạy chúng thông qua các chức năng
hEllo thErE hEllo thErE
Is string? true "hello there"

OH MY OH MY
Is string? true "oh my"

368 is a big number 368 is a big number
Is string? true "368"

56839 56839
Is string? true "😇"

0 0
Is string? true "10"
3 tốt. Chính sự linh hoạt này mang lại cho JS sức mạnh của nó và thử nghiệm các chuỗi đặc biệt làm cho mã của bạn ít tương tác hơn.
jQuery objects; are they arrays? No. Are they good enough? Yeah, you can run them through
hEllo thErE hEllo thErE
Is string? true "hello there"

OH MY OH MY
Is string? true "oh my"

368 is a big number 368 is a big number
Is string? true "368"

56839 56839
Is string? true "😇"

0 0
Is string? true "10"
3 functions just fine.
It's this flexibility that gives JS its power, and testing for strings specifically makes your code less interoperable.

Đầu ra của những điều trên là:

hEllo thErE hEllo thErE
Is string? true "hello there"

OH MY OH MY
Is string? true "oh my"

368 is a big number 368 is a big number
Is string? true "368"

56839 56839
Is string? true "😇"

0 0
Is string? true "10"

Vì vậy, đó là tất cả về lý do tại sao bạn muốn biết nếu có gì đó là một chuỗi. Nếu, giống như tôi, bạn đã đến đây từ Google và muốn xem có thứ gì đó giống như chuỗi không, đây là một câu trả lời. Nó thậm chí còn không đắt tiền trừ khi bạn làm việc với các mảng char thực sự dài hoặc sâu. Điều này là do tất cả là nếu các câu lệnh, không có chức năng nào gọi như

hEllo thErE hEllo thErE
Is string? true "hello there"

OH MY OH MY
Is string? true "oh my"

368 is a big number 368 is a big number
Is string? true "368"

56839 56839
Is string? true "😇"

0 0
Is string? true "10"
4. Ngoại trừ nếu bạn đang cố gắng xem một mảng char với các đối tượng chỉ có các ký tự của ____ 15 hoặc nhiều byte, trong trường hợp đó không có cách nào khác để kiểm tra ngoại trừ để tạo chuỗi và đếm các ký tự, tương ứng
If, like me, you arrived here from google and wanted to see if something was string-like, here's an answer.
It isn't even expensive unless you're working with really long or deeply nested char arrays.
This is because it is all if statements, no function calls like
hEllo thErE hEllo thErE
Is string? true "hello there"

OH MY OH MY
Is string? true "oh my"

368 is a big number 368 is a big number
Is string? true "368"

56839 56839
Is string? true "😇"

0 0
Is string? true "10"
4.
Except if you're trying to see if a char array with objects that only have
hEllo thErE hEllo thErE
Is string? true "hello there"

OH MY OH MY
Is string? true "oh my"

368 is a big number 368 is a big number
Is string? true "368"

56839 56839
Is string? true "😇"

0 0
Is string? true "10"
5's or multi-byte characters, in which case there's no other way to check except to make the string, and count characters the bytes make up, respectively

function duckyString(string, normalise, unacceptable) {
    var type = null;
    if (!unacceptable)
        unacceptable = {};
    if (string && !unacceptable.chars && unacceptable.to == null)
        unacceptable.to = string.toString == Array.prototype.toString;

    if (string == null)
        ;

    //tests if `string` just is a string
    else if (
        !unacceptable.is &&
        (typeof string == 'string' || string instanceof String)
    )
        type = 'is';

    //tests if `string + ''` or `/./.test(string)` is valid
    else if (
        !unacceptable.to &&
        string.toString && typeof string.toString == 'function' && string.toString != Object.prototype.toString
    )
        type = 'to';

    //tests if `[...string]` is valid
    else if (
        !unacceptable.chars &&
        (string.length > 0 || string.length == 0)
    ) {
        type = 'chars';
        //for each char
        for (var index = 0; type && index < string.length; ++index) {
            var char = string[index];

            //efficiently get its length
            var length = ((duckyString(char, false, {to:true})) ?
                char :
                duckyString(char, true) || {}
            ).length;

            if (length == 1)
                continue;

            //unicode surrogate-pair support
            char = duckyString(char, true);
            length = String.prototype[Symbol && Symbol.iterator];
            if (!(length = length && length.call(char)) || length.next().done || !length.next().done)
                type = null;
        }
    }

    //return true or false if they dont want to auto-convert to real string
    if (!(type && normalise))
        //return truthy or falsy with /null if they want why it's true
        return (normalise == null) ? type != null : type;

    //perform conversion
    switch (type) {
    case 'is':
        return string;
    case 'to':
        return string.toString();
    case 'chars':
        return Array.from(string).join('');
    }
}

Bao gồm là các tùy chọn để

  • Hỏi phương pháp nào được coi là chuỗi-y
  • loại trừ các phương thức phát hiện chuỗi (ví dụ: nếu bạn không thích
    hEllo thErE hEllo thErE
    Is string? true "hello there"
    
    OH MY OH MY
    Is string? true "oh my"
    
    368 is a big number 368 is a big number
    Is string? true "368"
    
    56839 56839
    Is string? true "😇"
    
    0 0
    Is string? true "10"
    
    4)

Dưới đây là nhiều bài kiểm tra hơn vì tôi là người hoàn thành:

out('Edge-case testing')
function test(text, options) {
    var result = duckyString(text, false, options);
    text = duckyString(text, true, options);
    out(result + ' ' + ((result) ? '"' + text + '"' : text));
}
test('');
test(null);
test(undefined);
test(0);
test({length:0});
test({'0':'!', length:'1'});
test({});
test(window);
test(false);
test(['hi']);
test(['\uD83D\uDE07']);
test([['1'], 2, new String(3)]);
test([['1'], 2, new String(3)], {chars:true});
  • Tất cả các trường hợp tiêu cực dường như được tính
  • Điều này sẽ chạy trên trình duyệt> = IE8
  • Mảng char có nhiều byte được hỗ trợ trên các trình duyệt với hỗ trợ iterator chuỗi

Output:

Edge-case testing
is ""
null null
null null
to "0"
chars ""
chars "!"
null null
chars ""
to "false"
null null
chars "😇"
chars "123"
to "1,2,3"

Là loại chuỗi trong js?

Loại chuỗi Độ dài của chuỗi là số lượng đơn vị mã UTF-16 trong đó, có thể không tương ứng với số lượng ký tự unicode thực tế;Xem trang tham chiếu chuỗi để biết thêm chi tiết.Chuỗi JavaScript là bất biến.Điều này có nghĩa là một khi một chuỗi được tạo ra, không thể sửa đổi nó.JavaScript strings are immutable. This means that once a string is created, it is not possible to modify it.

Chuỗi trong JavaScript là gì?

Một chuỗi là một chuỗi của một hoặc nhiều ký tự có thể bao gồm các chữ cái, số hoặc ký hiệu.Các chuỗi trong JavaScript là các loại dữ liệu nguyên thủy và bất biến, điều đó có nghĩa là chúng không thay đổi.a sequence of one or more characters that may consist of letters, numbers, or symbols. Strings in JavaScript are primitive data types and immutable, which means they are unchanging.

Loại trong JavaScript là gì?

TypeOf là từ khóa JavaScript sẽ trả về loại biến khi bạn gọi nó.Bạn có thể sử dụng điều này để xác nhận các tham số chức năng hoặc kiểm tra nếu các biến được xác định.Có những công dụng khác là tốt.Toán tử typeof rất hữu ích vì nó là một cách dễ dàng để kiểm tra loại biến trong mã của bạn.. You can use this to validate function parameters or check if variables are defined. There are other uses as well. The typeof operator is useful because it is an easy way to check the type of a variable in your code.

7 loại dữ liệu trong JavaScript là gì?

Có 7 loại dữ liệu nguyên thủy: chuỗi, số, Bigint, Boolean, NULL, không xác định và ký hiệu.