js高级程序设计,基本类型和字符串部分,总结:

1.typeof和instanceof的区别
  • typeof是返回基本数值的类型,有undefined、函数、object、原始类型。

  • instanceof是判断一个变量是否是一个对象的实例,返回的是boolean值。

    const a = 10;
    const obj = new Number(10);  // 一般不建议这么做
    const number = Number(10);  // 转型函数,转换为基本类型的数值
    console.log(typeof a);  // "number"
    console.log(obj instanceof Object);  // "object"
    console.log(typeof number);  // "number"
    
2.Number类型的基本常用方法之toFixed()方法

对于这个方法,之前也用过,它会保留指定的小数位。但是现在写出来只是为了加深一下我之前不了解的一个细节。这个细节就是假如数值的小数位比指定的小数位数值还要大,那么在最接近指定小数位的值会进行舍入。这是我之前所不知道的!

const a = 10;
console.log(a.toFixed(2));  // "10.00",这是正常情况,不够就用0代替

// 就是主题了
const b = 10.005;
console.log(b.toFixed(2));  // "10.01",小数点的第三位进行了舍入的操作,所以不是10.00了
3.String的属性和操作方法

字符串都有length属性,所以可以计算字符串的长度,即使有的字符串是双字节字符,计算时也是当做一个字符。

const str = "hello";
console.log(str.length);  // "5"

下面的两个方法的应用场景有限,但是也是很有用。它们就是charAt()和charCodeAt(),这两个方法都会接收一个参数,即基于0索引的字符位置。

// charAt()方法会返回索引位置的字符
const str = "hello";
console.log(str.charAt(1));  // "e",索引位置从0开始

// charCodeAt()方法会返回索引位置的字符编码
const str = "hello";
console.log(str.charCodeAt(1));  // "101",这是e的字符编码值

还有一种就是通过类似数组取元素的方式,取得指定位置的字符。因为字符串有length属性,就和arguments对象一样,所以都可以通过方括号([])加上数值取得指定元素。

const str = "world";
console.log(str[0]);  // "w",这个写法很方便啊
4.字符串的操作方法之concat()、slice()、substr()、sunstring()方法

(1)首先对concat()方法进行说明,一般我们是在数组中使用它,进行连接数组。其实他也可以连接字符串,只不过我们平常使用"+"进行拼接,这样比用cancat()方便很多。这个方法可以接受任意多个参数,进行与字符串进行拼接。

const str = "a";
const newStr = str.concat("b", "c", "!");
console.log(newStr);  // "abc!"
console.log(str);  // "a";

(2)就是对后面三个方法的了解,这里面有很多学问啊。它们都可以接受一个或者两个参数(splice方法后面再说),返回的都是截取的字符串。第一个参数都是截取字符串的开始位置(substring方法可能会变化),第二个参数指定的话就代表截取的结束位置。

const str = "nice!";

// 方法中传入一个参数时,没有第二个参数,默认截取到字符串的末尾

const s1 = str.slice(3);  
const s2 = str.substring(3);  
const s3 = str.substr(3);  
console.log(s1);  // "e!"
console.log(s2);  // "e!"
console.log(s3);  // "e!"
consoe.log(str);  // "nice!"

//  方法中传入两个参数时
const s4 = str.slice(2, 4); // 第二个参数代表结束的索引位置
const s5 = str.substring(2, 4); // 第二个参数代表结束的索引位置
const s6 = str.substr(2, 4); // 第二个参数代表截取字符串的长度,超过字符串的长度时,默认截取到字                                                     符串末尾

console.log(s4);  // "ce",[2,4),获取的是索引位置为2,3的值
console.log(s5);  // "ce",[2,4),获取的是索引位置为2,3的值
cosole.log(s6);  // "ce!"
console.log(str); // "nice!"

// 第一个参数为负数时,会从字符串的末尾开始截取,索引值从1开始,而不再是0
// ***对于参数为负数时,substring()方法会将负数转换为0,再进行截取字符串的操作***

const s7 = str.slice(-1);
const s8 = str.substring(-1);
const s9 = str.substr(-1);

console.log(s7);  // "!"
console.log(s8); // "nice!",将负数转换为0,即开始位置为0
console.log(s9); // "!"

// 第二个参数为负数时
// ***对于第二个参数为负数时,substring()方法会将负数转换为0,再进行截取字符串的操作***
// ***对于第二个参数为负数时,substr()方法会将负数转换为0,再进行截取字符串的操作***

const s10 = str.slice(1, -2);
const s11 = str.substring(1, -2);
const s12 = str.substr(1, -2);

console.log(s10); // "ic", -2 + 5 = 3,即结束位置为3
console.log(s11); // "n",把负数转换为0, 再将两个参数进行比较,数值小的放前面,即[0, 1)
console.log(s12); // "",这里取得是空字符串,把负数转换为0,即截取的长度为0,所以为空字符串
console.log(str); // "nice!"

以上对这些方法操作的结果都是保存在新的变量中,它们不会改变原始字符串的值!!!

Come on!!!

你可能感兴趣的:(js高级程序设计,基本类型和字符串部分,总结:)