js数据类型之数值类型与字符类型


数据类型

如何查看当前数据类型:typeof 变量名;

# js/python都是一门动态类型
name = 'gary'
name = 123
name = [1,2,3,4]
// 这里我们知道name可以指向任意的数据类型
// 但是有一些语言中,变量名只要指向一种类型,后续就不能更改

数值类型(number)

// 在js中是不区分整型和浮点型的 同属于number类型
var a = 11;
var b = 11.11;
typeof a;   // number类型
typeof b;	// number类型

//  特殊的数值类型NaN :表示的意思是 不是一个数字 (not a number)

这个NaN在类型转换的时候会体现:
parseFloat('11.11')
11.11

parseInt('11.11')
11

parseInt('2123asdjjas2222')
2123

parseInt('asdasd123s1sdas2232')
NaN

字符类型(string)

单行文本:
单引号:var s = 'gary';
双引号:var s = "gary";

多行文本: 模板字符串``
// 模板字符串除了可以定义多行文本之外还可以实现格式化字符串操作
``:   var s = `多行文本`;

格式化字符串:
	var name = 'gary';
	var age = 18;
	var data = `
		my name is {name} and my age is {age}
	`   // 错误示范
    
    var data = `
		my name is ${name} and my age is ${age}
	`  // 必须添加$符号

// ${} 大括号里面的变量名会自动去之前找这个变量名所对应的值 然后填充到${}这个位置,如果没有找到对应的则报错

// 字符串的拼接
在python中不推荐使用+做拼接 推荐使用join
而在js中则推荐使用+作为拼接符

字符类型string内置方法:

方法 说明 对比python
.length 返回长度 len()
.trim() 移除空白 strip()
.trimLeft() 移除左边的空白 lstrip()
.trimRight() 移除右边的空白 rstrip()
.charAt(n) 返回第n个字符 [索引]
.concat(value, ...) 拼接 join()
.indexOf(substring, start) 子序列位置 str.find()
.substring(from, to) 根据索引获取子序列 索引取值:[索引]
.slice(start, end) 切片 [start,end]
.toLowerCase() 小写 lower()
.toUpperCase() 大写 upper()
.split(delimiter, limit) 分割 split

演示:

1、返回长度.length()

var name = 'garysss';   
name.length
7
2、 移除空白.trim()
var name1 = '   gary   ';
name1.trim();
'gary'
name1.trimLeft();
'gary   '
name1.trimRight();
'   gary'

var name2 = '$$gary$$';   // js中不能指定移除特殊字符
name2.trim('$');
'$$gary$$'
3、返回索引所对应的值charAT()

name2.charAt(3);
'a'
4、返回值所对应的索引indexOf()

name2.indexOf('ar');   // 只返回第一个匹配到的值得索引
3
5、切片操作

name2.substring(0,5);
'$$gar'

name2.slice(0,5);
'$$gar'

name2.substring(0,-1);   //  substring不支持负数索引
''

name2.slice(0,-1);   //  所以以后只需要用slice就可以
'$$gary$'
6、转换大小写

var name3 = 'GaRySmarT2223'
name3.toUpperCase();
'GARYSMART2223'

name3.toLowerCase();
'garysmart2223'
7、字符串的切割

var name4 = 'gary|tom|jack|jason|...'
name4.split('|');
(5) ['gary', 'tom', 'jack', 'jason', '...']

name4.split('|',2);   // 2表示切割完之后输出几个元素
(2) ['gary', 'tom']

name4.split('|',100);  //  超出原有的元素也不会报错 输出所有的元素
(5) ['gary', 'tom', 'jack', 'jason', '...']
8、字符串的拼接

var a = 11;
name4.concat(a);
'gary|tom|jack|jason|...11'

对比python:
l = [1,2,3,4,5,6,7]
res = '|'.join(l)
print(res)    # 这里会直接报错 因为join拼接只能为字符出类型 而列表内都为整型

// 故js是弱类型(内部会自动转换成相同的数据类型做操作)