基本概念--数据类型
js的数据类型
js的数据类型分为两种 ,一种是原始类型和对象类型
基本类型:number,Boolean,String,Null,undefined,Symbol
引用类型:Object,Array,function
1.numBer
1.1 number分为整数类型和浮点类型
1.2 js中的算术运算
1.2 js程序中是使用使用语言本身提供的运算符来进行数字运算。这些运算符包(+),(-),(*),(/),(%),除了基本的运算符外,js还提供了更加复杂的算术运算,这些复杂的运算通过作为Math对象的属性定义函数和常量实现
Math对象
console.log(Math.abs(-5));//求绝对值5
console.log( Math.ceil(.6));//向上取整 1
console.log(Math.round(0.6));//四舍五入0
console.log( Math.floor(0.6));//向下取整 0
console.log(Math.max(10,20,30));//返回最大值 30
console.log(Math.min(10,20,30));//返回最小值 10
console.log(Math.random());//生成一个大于等于0小于1.0的随机伪数
console.log(Math.PI);//π圆周率
console.log(Math.E);//自然对数的底数
console.log(Math.sqrt(3));//3的平方根
console.log(Math.pow(3,1/3));//3的立方根
console.log(Math.sin(0));//三角函数
console.log(Math.log(10));//10的自然对数
console.log(Math.exp(3));//e的三次幂
1.3 js的数字具有准确的精度,并可以极其近似于0.1,但是事实上数字不能精确表述带来一些问题
var x=0.3-0.2;
var y=0.2-0.1;
console.log(x==y);//false
2.日期和时间
let now = new Date(); //获取现在的时间
let mon=now.getMonth();//获取月份 从0开始计数的月份
let week=now.getDay();//获取星期几,0代表周日,1-6分布对应星期一到星期六
let H=now.getHours();//获取小时数
let minutes=now. getMinutes();//获取分钟
let sec=now. getSeconds();//获取秒数
new Date('2022/1/30 09:20');//设置时间
new Date('2022-1-30 09:20') ;兼容模式不好
时差
let now=new Date();
let end=new Date('2022/3/30 09:20');
let poor=
end-now;//这个结果是他们之间的毫秒数
3.文本字符串
let text='吉祥如意';
console.log(text.length)
console.log(text.charAt(0))//查找第几个字符
console.log(text.charCodeAt(0))//返回一个字符的Unicode的编码
console.log(text.codePointAt(0))//返回的一个字符串Unicode的编码
console.log(text.normalize())
let msg="Hello world!"; //startsWith,endsWith,includes
只有一个参数的时候书按整个字符串去匹配,第二个参数是从第几个字符开始匹配
console.log(msg.startsWith('Hello',5));//刚开始的位置是否有这个字符串 FALSE
console.log(msg.endsWith('!'));//这个字符串是否含有叹号
console.log(msg.includes('o'));//这个字符串是否包含o
console.log(msg.indexOf('o'));//注 方法对大小写敏感,如果搜索的字符串未出现则返回-1,如果出现可返回某个指定的字符串值在字符串中首次出现的位置
console.log(msg.lastIndexOf('o'));//如果搜索的字符串未出现则返回-1,如果出现可返回某个指定的字符串值在字符串中最后一次出现的位置
console.log('x'.repeat(3));//xxx 只接受一个number类型的参数,表示该字符串重复的次数
let s='hello,world';
console.log(s.charAt(0));//获取第一个字符
console.log(s.charAt(s.length-1));//获取最后一个字符
console.log(s.substring(1,4));//ell 第一个参数是字符串开始的位置,第二个参数是字符串结束的位置
console.log(s.slice(1,4));//ell第一个参数是字符串开始的位置,第二个参数是字符串结束的位置
console.log(s.slice(-3));//获取最后3个字符console.log(s.indexOf('l'));//字符串‘l’首次出现的位置 2
console.log(s.lastIndexOf('l'));//字符串‘l’最后一次出现的位置
console.log(s.indexOf('l',3));//在位置3及以后首次出现字符l的位置
console.log(s.split(','));//字符串分割成数组
['hello','world']console.log(s.replace('h','H'));//全文字符替换
console.log(s.toUpperCase());//全部转换成大写
4.布尔值
js程序中的比较语句的结果是布尔值,true和false
5.null和undefined
null是js语言的关键字,它表示一个特殊值,常用来描述‘空值’,对null执行typeof 预算,结果返回的字符串‘object’,我们可以将null当做特殊的对象值,含义是非对象
undefined 它是变量的一种取值,表明变量没有初始化,
你可以这样认为undefined是表示系统级的,出乎意料的或类似于错误值的空缺,而null表示程序级的,正常的或在意料之中的空缺
尽管null和undefined是不同的,但是它们都表示值的空缺,两者可以互换
console.log(null==undefined)//true
console.log(null===undefined)//false
6、全局对象
在客户端js中window充当了全局对象
7、常用的运算符
in运算符
操作符用来判断某个属性属于某个对象,可以是对象的直接属性,也可以是通过prototype继承的属性
var mycar = {make: 'Honda', model: 'Accord', year: 1998}
console.log('make' in mycar) //true 判断某个属性是否存在
var color1 = new String('green');
console.log('length' in color1 );//true
instanceof
运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上
var arr=['apple','红']; console.log(arr instanceof Array );//判断是否一个字符串 var obj={a:'1',b:'2'}; console.log(obj instanceof Object);//判断是否为一个对象
三元运算符
三元运算符的典型应用场景,判断一个变量是否有定义,如果有定义则使用它,如果无定义使用一个默认值
x>0?x:-x;
typeof运算符
typeof是一元运算符,放在单个操作数的前面,操作数可以是任意类型
function getdata(){ }
var str='systy';
console.log(typeof str);//string判断字符串
var num=10;
console.log(typeof num);//number
console.log(typeof NaN);//number
console.log(typeof true);//boolean
console.log(typeof getdata);//function
var obj={ }
console.log(typeof obj);//object
console.log(typeof null);//object
delete运算符
它用来删除对象的属性,或者数组元素
let obj={ x:1, y:2 }
delete obj.x;
console.log(obj)
void运算符
void是一元运算符,这个运算符常用在客户端的URL-----javascript:URL中
<a href='javascript:void window.open()'></a>
逗号运算符
逗号运算符的应用场景for循环中
for(let i=0,j=10;i<j;i++,j--){ console.log(i+j)}