JS-part5.1-字符串的创建/操作/模板字符串/ASCII码

字符串的创建

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 中文编码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值