基本数据类型

基本数据类型

  • 查看数据类型:typeof

数值类型

JS中的数值类型 number 包含了整数和小数

var a = 11;
var b = 11.11;
typeof a;  // number
typeof b;  // number

//类型转换
parseInt()
paseFloat()
parseInt('12312312')  // 12312312
parseFloat('11.11')  // 11.11
parseInt('11.11')  // 11
parseInt('123sdasdajs2312dasd')  // 123
parseInt('asdasdad123sdasdajs2312dasd')   // NaN

// NaN:非数字类型 NOT A NUMBER

字符类型

var i = 'js'
console.log(typeof i)   // string
// JS中可以用单引号和双引号,但不支持三引号
// 模板字符 反引号
var s3 = `
asdkajsd
asdjlajdkl
`
// 模版字符串除了可以定义多行文本之外还可以实现格式化字符串操作
// 书写${} 会自动去前面找大括号里面的变量名对应的值 如果没有定义直接报错
var name = 'jason'
var age = 18
var sss = `
   my name is ${name} and my age is ${age}
`

// 字符串拼接:+
name + age

字符类型常用方法

/*
.length	     返回长度
.trim()	     移除空白
.trimLeft()	 移除左边的空白
.trimRight() 移除右边的空白
.charAt(n)	 返回第n个字符
.concat(value, ...)	拼接
.indexOf(substring, start)	子序列位置
.substring(from, to)	 根据索引获取子序列,不支持复数
.slice(start, end)	切片
.toLowerCase()	小写
.toUpperCase()	大写
.split(delimiter, limit)	分割
*/
var name = 'egondsb'
name.length  // 7

var name1 = '  egonDSB  '
name1.trim()  // "egonDSB"
name1.trimLeft()  // "egonDSB  "
name1.trimRight()  //"  egonDSB"
//  JS中的去除空白并不像Python中的strip一样可以去除指定的字符,它只能去空白

var name2 = '$$jason$$'
name2.charAt(0)  // "$"
name2.indexOf('as')  // 3

name2.substring(0,5)  // "$$jas"
name2.slice(0,5)  //  "$$jas"
name2.substring(0,-1)  // ""  # 不识别负数
name2.slice(0,-1)  // "$$jason$"   # 后面推荐就使用slice就可以

布尔值

/*
1.在python中布尔值是首字母大写的
	True
	False
2.但是在js中布尔值是全小写的
	true
	false
布尔值是false的有哪些
	空字符串、0、null、undefined、NaN
*/

null与undefined

null
	表示值为空 一般都是指定或者清空一个变量时使用
		name = 'jason'
		name = null
undefined
	表示声明了一个变量 但是没有做初始化操作(没有给值)
	函数没有指定返回值的时候 返回的也是undefined

相当于null是空,而nudefined是无

运算符

# 算术运算符
var x = 10;
var res1 = x++;
var res2 = ++x;
res1 10
res2 12
++表示自增1 类似于 +=1
加号在前先加后赋值 加号在后先赋值后加

# 比较运算符
1 == '1'  # 弱等于  内部自动转换成相同的数据类型比较了
true  

1 === '1'  # 强等于  内部不做类型转换

1 != '1'
false
1 !== '2'
true

# 逻辑运算符
	# python中 and or not
  # js中 && || !
5 && '5'
'5'

0 || 1
1

!5 && '5'
false

"""
一定要注意到底什么时候返回的是布尔值 什么是返回的是数据
按照后端逻辑理解吧 js这块看看就行了
"""

# 赋值运算符
= += -= *= ....

流程控制

# if判断
if (age<18){
  console.log("培养一下")
}else if(age<24){
  console.log('小姐姐你好 我是你的粉丝')
}else{
  console.log('你是个好人')
}
/*
在js中代码是没有缩进的 只不过我们处于python书写习惯人为的加上了而已
()条件
{}代码块
*/
# switch语法
// 提前列举好可能出现的条件和解决方式
var num = 2;
switch(num){
  case 0:
  	console.log('喝酒');
  	break;  # 不加break 匹配到一个之后 就一直往下执行
  case 1:
  	console.log('唱歌');
  	break;
  case 2:
  	console.log('洗脚');
  	break;
  case 3:
  	console.log('按摩');
  	break;
  case 4:
  	console.log('营养快线');
  	break;
  case 5:
  	console.log('老板慢走 欢迎下次光临');
  	break;
  default:
  	console.log('条件都没有匹配上 默认走的流程')
}

# for循环
# 打印0-9数字
for(let i=0;i<10;i++){
  console.log(i)
}
# 题目1  循环打印出数组里面的每一个元素
var l1 = [111,222,333,444,555,666]
for(let i=0;i<l1.length;i++){
  console.log(l1[i])
}

# while循环
var i = 0
while(i<100){
  console.log(i)
  i++;
}

# 三元运算符
# python中三元运算符 res = 1 if 1>2 else 3
# JS中三元运算  res = 1>2?1:3 
条件成立取问好后面的1 不成立取冒号后面的3
var res = 2>5?8:10 # 10
var res = 2>5?8:(8>5?666:444)  # 666
"""
三元运算符不要写的过于复杂 
"""

数组对象

// 对象类型:Array  数组,类似于Python里的列表
var arr1 = [1, 2, 3, 4, 5]
console.log(typeof(arr1), arr1);  // 结果:object  (5) [1, 2, 3, 4, 5]

# js中的数组不支持负向索引取值

.length	数组的大小
.push(ele)	尾部追加元素
.pop()	获取尾部的元素
.unshift(ele)	头部插入元素
.shift()	头部移除元素
.slice(start, end)	切片
.reverse()	反转
.join(seq)	将数组元素连接成字符串  #和python的是相反的
.concat(val, ...)	连接数组
.sort()	排序
.forEach()	将数组的每个元素传递给回调函数
.splice()	删除元素,并向数组添加新元素。第一个参数是起始位置,第二个是删除个数,第三个是要添加的元素
.map()	返回一个数组元素调用函数处理后的值的新数组

// forEach
ll.forEach(function(value,index,arr){console.log(value,index,arr)},ll) 
# 元素 value + 元素索引 index + 元素的数据来源 arr

函数对象

// 函数类型:function
function 函数名() {};
var 函数名 = function() {};

# 在JS中的函数中参数传的无论多了或是少了都不会报错,不够的话会用nudefined
# 关键字:arguments 会获取到函数接收到的所有参数,可以用arguments进行判断用来提示参数数量不对

return 返回值
当有多个返回值时,获取返回值时只能得到最后的那个返回值,想要多个返回值都得到,需要自己将返回值组成数组类型
# JS中不支持解压赋值

匿名函数
function() {};

自定义对象

// 对象类型:object  类似于Python里的字典
# 第一种创建自定义对象方式
var obj1 = {}
# 第二种创建自定义对象方式
var obj1 = new Object()  // 创建出来是一个空对象

var d = {'name':'jason','age':18}
d['name']  // 'jason'
d.name   //'jason'

// 往对象中添加元素
d.s='1s'

Date对象

let d3 = new Date()
console.log(d3)  // Wed May 12 2021 14:37:50 GMT+0800 (中国标准时间)

/*也可以自己输入时间*/
let d4 = new Date('2200/11/11 11:11:11') 
//Tue Nov 11 2200 11:11:11 GMT+0800 (中国标准)

let d5 = new Date(1111,11,11,11,11,11)
//Mon Dec 11 1111 11:11:11 GMT+0805 (中国标准时间) 
# 月份从0-11

# 时间对象具体方法
let d6 = new Date();
d6.getDate()           获取日
d6.getDay()		       获取星期
d6.getMonth()	       获取月份(0-11)
d6.getFullYear()       获取完整的年份
d6.getHours()          获取小时
d6.getMinutes()	   	   获取分钟
d6.getSeconds()	       获取秒
d6.getMilliseconds()   获取毫秒
d6A.getTime()	       时间戳

JSON对象

/* JS的序列号与Python中的对比
          JS                 Python
序列化   JSON.stringify()      dumps
反序列化  JSON.stringify()     loads
*/
let d7 = {'name':'jason','age':18}
let res666 = JSON.stringify(d7)
"{"name":"jason","age":18}"

JSON.parse(res666)
{name: "jason", age: 18}

RegExp对象

# 第一种定义方式 在new时带上正则匹配格式
let reg1 = new RegExp('^[a-zA-Z][a-zA-Z0-9]{5,11}')
reg1.test('egondsb')    //true
# 第二种定义方式  用两个//来放置
let reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/
reg2.test('egondsb')  //true

// 全局匹配
sss.match(/s/)  // ["s", index: 5, input: "egondsb dsb dsb", groups: undefined]
sss.match(/s/g)  // (3) ["s", "s", "s"]

# 坑一全局模式有一个lastIndex属性
let reg3 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/g
reg3.test('egondsb')  // true  
reg3.lastIndex        // 7
reg3.test('egondsb')  // false
reg3.lastIndex        //0
reg3.test('egondsb')  // true
reg3.test('egondsb')  // false

# 坑二  在JS的函数什么参数都不传, 会默认给传一个undefined
let reg4 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/
reg4.test()  // true

Math对象

abs(x)      返回数的绝对值。
exp(x)      返回 e 的指数。
floor(x)    对数进行下舍入。
log(x)      返回数的自然对数(底为e)。
max(x,y)    返回 x 和 y 中的最高值。
min(x,y)    返回 x 和 y 中的最低值。
pow(x,y)    返回 x 的 y 次幂。
random()    返回 0 ~ 1 之间的随机数。
round(x)    把数四舍五入为最接近的整数。
sin(x)      返回数的正弦。
sqrt(x)     返回数的平方根。
tan(x)      返回角的正切。

posted @ 2021-08-17 19:15  zheng-sn  阅读(99)  评论(0)    收藏  举报