JavaScript 字符串

  • JavaScript字符串

    JavaScript字符串用于存储和操作文本。JavaScript字符串是在引号内写入的零个或多个字符。
    var x = "John Doe";
    尝试一下
    您可以使用单引号或双引号:
    var carName1 = "Volvo XC60";  // 双引号
    var carName2 = 'Volvo XC60';  // 单引号
    尝试一下
    您可以在字符串中使用引号,只要它们与字符串周围的引号不匹配:
    var answer1 = "It's alright";
    var answer2 = "He is called 'Johnny'";
    var answer3 = 'He is called "Johnny"';
    尝试一下
  • 字符串长度

    使用内置length属性获得字符串的长度:
    var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var sln = txt.length;
    尝试一下
  • 特殊字符

    因为字符串必须用引号写,所以JavaScript运行引擎会误解这个字符串中的引号引起语法错误:
    var x = "We are the so-called "Vikings" from the north.";
    该字符串将被切割为“We are the so-called ”。避免此问题的解决方案是使用反斜杠转义字符。反斜杠(\)转义字符将特殊字符转换为字符串字符:
    代码 结果 描述
    \' ' 单引号
    \" " 双引号
    \\ \ 反斜杠
    在字符串中用转义插入单引号,双引号,反斜杠
    var x = "We are the so-called \"Vikings\" from the north.";
    var y = 'It\'s alright.';
    var z = "The character \\ is called backslash.";
    
    尝试一下
    其他六个转义序列在JavaScript中有效:
    代码 描述
    \b 退格
    \f 换页
    \n 新行
    \r 回车
    \t 水平制表
    \v 垂直制表
    上面的6个转义字符最初设计用于控制打字机,电传打字机和传真机。它们在HTML中没有任何意义。
  • 截断长的代码行

    为了最好的可读性,程序员经常喜欢避免长度超过80个字符的代码行。如果JavaScript语句不适合一行,那么截断它的最佳位置是在运算符之后:
    document.getElementById("demo").innerHTML =
    "Hello Dolly!";
    尝试一下
    您还可以使用单个反斜杠拆分文本字符串中的代码行:
    document.getElementById("demo").innerHTML = "Hello \
    Dolly!";
    尝试一下
    这种方法不是优选的方法。它可能没有普遍的支持。有些浏览器不允许在\后面留出空格。
    分解字符串的一种更安全的方法是使用字符串连接操作符“+”:
    document.getElementById("demo").innerHTML = "Hello " + 
    "Dolly!";
    尝试一下
  • 字符串可以是对象

    通常,JavaScript字符串是原始值,从文字创建:
    var firstName = "John";
    但是字符串也可以用关键字new定义为对象:
    var firstName = new String("John");
    var x = "John";
    var y = new String("John");
    
    // typeof x 返回 string
    // typeof y 返回 object
    
    尝试一下
    不要将字符串创建为对象。它会降低执行速度。new关键字使代码复杂化。这会产生一些意想不到的结果:
    使用==运算符时,相等的字符串是相等的:
    var x = "John";             
    var y = new String("John");
    
    // (x == y) 为true 因为他们有相同的值
    
    尝试一下
    使用===运算符时,相同的字符串不相等,因为===运算符期望类型和值都相等。
    var x = "John";             
    var y = new String("John");
    
    // (x === y) 为false 因为他们的类型不同
    尝试一下
    甚至更糟。对象无法比较:
    var x = new String("John");             
    var y = new String("John");
    
    // (x == y)  为 false 因为 x 和 y 为不同的对象
    尝试一下
    var x = new String("John");             
    var y = new String("John");
    
    // (x === y) 为 false 因为 x 和 y 为不同的对象
    尝试一下
    注意(x==y)和(x===y)之间的差异。比较两个JavaScript对象将始终返回false。