字符串的创建
JS 创建字符串有两种方式
1. 字面量创建
var str = 'hello world';
var str = "hello world";
2. 内置构造函数创建
var str = new String('hello world');
两种方式创建的字符串没有区别
=> 除了在控制台打印的时候有区别
=> 使用起来没有任何区别
+ 因为字符串也是一个 包装数据类型
=> 一个数据当你使用的时候会自动转换成复杂数据类型
=> 当你使用完毕,自动转换回基本数据类型
什么是包装数据类型?
之前写到的对象的操作中的点语法:
+ obj.name 表示访问 obj 空间内部的 name 成员
+ 因为 obj 是一个复杂数据类型,在堆内存里面有一个空间
+ 而 str.length 也可以执行
=> 我访问了 str 这个空间内部的 length成员
=> 但是 str 是一个基本数据类型,在堆内存中没有空间
=> 原因就是: 当你使用 str.length 的时候
=> 会自动转换成复杂数据类型,在堆内存里面开辟一个空间
=> 按照索引把每一个字符排列进去
=> 等你访问结束,拿到你要拿到的内容后
=> 这个开辟的临时空间就被销毁了
toString()
+ 功能:转字符串
+ 可以转数字,布尔,字符串
+ 使用: 字符串.toString()
+ 但是不能转 undefined 和 null
+ 这就是因为 数字 布尔 字符串 都是包装数据类型
+ 而 undefined 和 null 不是包装数据类型
字符串的操作
+ 字符串也有一个 length 属性
=> 表示字符串的长度
=> 也就是字符串里面有多少个字符
=> 注意:在字符串里面每一个空格都算一个字符
=> 字符串里面的 length 属性是一个只读的属性
-> 如果设置,不会报错,只是设置不成功
var str = 'hello world';
console.log(str.length); // 11
str.length = 100; //不报错,只是设置不成功
+ 字符串也是按照索引进行排列
=> 我们可以使用 索引 来获取字符串中的某一个字符
=> 字符串的索引只能获取,不能设置
=> 不会报错,只是设置不成功
+ 因为是基本数据类型,不管是什么原因,不能被改变
=> 只能覆盖(通过赋值)
var str = 'hello world';
console.log(str[0]); // h
console.log(str[100]); // undefined
str[3] = 'k'; //不报错,只是设置不成功
解释:
+ 字符串因为按照 索引 排列
=> 也可以使用 for 循环遍历
var str = 'hello world';
for(var i = 0; i < str.length; i++){
console.log(str[i]);
}
模板字符串
拼接越复杂的字符串,模板字符串的优势越突出!!!
+ ES2015 之前,我们拼接字符串使用 +
+ ES2015 的标准中,推出了一种新的字符串定义方式
=> 使用 反引号(``)
+ 我们把用 反引号 定义的字符串叫做模板字符串
// 普通字符串
var str = 'hello world';
// 模板字符串
var str2 = `hello world`;
+ 和 普通字符串 的区别
1. 单引号和双引号定义的字符串不能换行
=> 模板字符串可以换行书写
=> 当我需要使用 JS 组装一个 html 结构的时候
2. 单引号和双引号不能直接在字符串里面解析变量
=> 模板字符串可以直接在字符串里面解析变量
=> 当你需要解析变量的时候
=> 只要写 ${变量}
3. 兼容性问题
=> ES6 语法
=> IE 低版本不支持
=> 但不影响书写, 后续PostCSS可以打包并实现语法降级
var age = 20;
var str = '我今年 age 岁了';
var str2 = `我今年
${age} 岁了`;
var str3 = `
<div>
<p>你好</p>
<p>世界</p>
</div>
`
console.log(str);
console.log(str2);
document.write(str3);
打印九九乘法表可以重新写成:
var row = 1;
var res;
while(row <= 9){
var col = 1;
while(col <= row){
// var res = row * col;
// document.write(col + ' * ' + row + ' = ' + res + ' ');
var mul = `${col} * ${row} = ${col * row}`;
document.write(mul);
col++;
}
row++;
document.write('<br>');
}
ASCII码
ASCII码
+ 读作: as key 读音
+ 一个编码,用来表示计算机输入的所有内容
+ 最早把所有可以输入的内容全部转换成 二进制数字 保存+ 给电脑上每一个按键,每一个输入都编了一个 二进制码
+ 一共128个,起名叫 ASCII
Unicode 编码
+ 随着计算机的发展,128 个不够用了
+ 万国码(统一码) 取名叫 unicode 编码
+ 里面前 128 个就是 ASCII编码
+ 后面顺序添加了世界上大部分国家的文字
+ 随着 web 技术的发展,在浏览器中统一使用一种 八位 的 unicode编码
+ 叫做 UTF-8
不同的编码
+ 在不同的字符集里面
+ 同一个序号表示的内容不一样
+ 例:GBK 中文编码