任务⭐
- js三种引入方式
- js的数据类型
- js的变量与运算符
js 引用方式
- 外联
- 内联
- 行内 需要事件触发
js数据类型
- number
- string ==''''也是字符串==
- boolean
- object
- undefined 找不到或者没有被赋值。
- null 空 ==打印在控制台类型是object==⭐ null 不是'' "" 后者是字符串 面试放在后面 引导面试
typeof 变量名 结果 解释 该变量的数据类型
js中 只要是数字 整数 小数 正负数 就是number
string 字符串 指代文字 只要加上引号 不论是什么 都是string类型
// 如果说 变量的值 是文字 字母 必须要加 引号 必须是字符串类型
// boolean 布尔类型 只有两个取值 true 是(满足条件) false 否 不满足条件
// var num = false;
// undefined 声明变量 没有赋值
// var num;
// null 是 object 对象类型
// var num = nu
var a='';
var b=null;
var c=undefined;
var d=true;
var e; // undefined
alert(typeof a); //string
alert(typeof b); // object
alert(typeof c); //undefined
alert(typeof d) //boolean
alert(typeof e) //undefined
运算符(简单)
加法:
true 1
false 0;
1+true > 2 number
1+false > 1 number
parseInt() 强转整数类型
parseFloat 强转小数类型 parFloat().toFixed(位数); 几位小数
乘法、减法 : 隐式类型转换
如果两边都是number 进行数学减法 如果一个不是number 进行隐式转换转为number , 不能转number ,打印的值是NaN 打印类型是number
= =值 === 值和数据类型同时相等
自增自减
- 不赋值 num+ + num--
- 赋值❤️ 谁在前 谁先运算
num=10;
result =num++ ; 先赋值再自加 result 10 num 11;⭐
result=++num;自加 再赋值 num=11 result 11;⭐
var sum=++num+ ++num---num-num
boolean 转换💖
0 转Boolean false 非0(默认1)负数也是true 转Boolean true 空字符串 转Boolean 也是false 有内容则是true null undefined 转Boolean 都是 false var bool =Boolean(null) var bool =Boolean(undefined)
😁💖null与undefined 的异同点 #面试题⭐⭐
Undefined和Null虽然是两种不同的基本数据类型,但是在某些情况也存在相同之处,下面看一下它们两者相同点和不同点。
(1)相同点
第一:Undefined和Null两种数据类型都只有一个字面值,分别是undefined和null.
第二:Undefined和Null类型在转换为Boolean类型的值时,都会转换为false.
// var num;
var num = null;
var bool = Boolean(num);
console.log(bool);//false
console.log(typeof bool);//boolean
第三:在需要将两者转换成对象的时候,都会抛出一个TypeError的异常。
var a;
var b=null;
cosnole.log(a.name);//Cannot read property 'name' of undefined
cosnole.log(b.name);//Cannot read property 'name' of undefined
第四:Undefined类型派生自Null类型,所以在非严格相等的比较下,两者是相等的。如下面代码所示:
var num1;
var num = null;
console.log(num1 == num); //true
num1=== num false
(2)不同点
第一:null是JavaScript的关键字,而undefined是JavaScript的一个全局变量,也就是挂载在window对象上的一个变量,并不是关键字。
第二:在使用typeof运算符进行检测时,Undefined类型的值会返回undefined.而Null类型的值返回为object
typeof undefined ;//undefined
typeof null ;//object
第三:在需要进行字符串类型的转换时,null会转换成字符串null,而undefined会转换字符串undefined.
undefined+" abc" //"undefined abc"
null+" abc" //"null abc"
console.log('10'+null); //'10null'
第四:在进行数值类型的转换时,undefined会转换为NaN,无法参与计算,而null会转换为0,可以参与计算。
console.log(undefined - 0); //NaN
console.log(null - 0); //0
console.log(10+null); //10 console.log('10'-null); //10 console.log(10-null); //10 ..
第五:建议:无论在什么情况下都没有必要将一个变量显示的赋值为undefined。如果需要定义某个变量来保存将来要使用的对象,应该将其初始化为null.
三元运算符
a>b?a:b;
循环
掌握for、for-in、for-of循环 掌握while 、do-while循环
语法
for(循环的初始值;循环条件;循环的自增量){
循环操作;
}
continue break
continue跳出本次循环,继续下面的循环
break 跳出本次循环,结束本次循环
引申== 与== =的区别
alert(a == b); //true == 判断值
alert(a ===b); // false ===判断的是值 和数据类型 必须同时满足
isNaN方法判断输入的是不是一个数字
双层循环
语法
for(循环条件1){ 循环操作1; for(循环条件2){ 循环操作2 } }
用for循环写九九乘法表
for (var i = 1;i<=9;i++){
for (var j = 1;j<=i;j++){
document.write(i+'*'+j+'='+(i*j)+' ');
}
document.write('<br>');//换行
}
数组
数组创建方法
- var arr=new Arrary(11,22,33,445,55);
- var arr=[];
数组的方法
- 数组名.push(值) 意思就是在数组的最后面添加一个值
- 数组名.unshift(值); 意思就是在数组的最前面添加一个值
- 数组名.splice(a,b); a代表从第几个下标删除,b代表删除几个
数组的属性
数组名.length输出数组的长度 数组名[下标] 显示数组下标对应的值
内置对象之数组❤️⭐
冒泡排序
var arr=[9,7,5,3,1,2,4,6,8];
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
//[arr[i],arr[j]]=[arr[j],arr[i]]; 可以通过后续的解构赋值交换数据
var t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
打乱数组 了解 会改变原数组
var arr=[9,7,5,3,1,2,4,6,8];
arr.sort(function(a,b){
return Math.random()>0.5? a-b:b-a;
});
console.log(arr);
数组的常见方法 ⭐⭐面试 #面试题:数组的常见方法
- push() 数组尾部添加 改变原数组 var arr=[1,2,3,4]; arr.push('哈哈'); # 1,2,3,4,哈哈
- unshift()数组头部添加内容 改变原数组 arr.unshift('哈哈'); # 哈哈,1,2,3,4
- pop() 删除末尾的元素 改变原数组 arr.pop(); # 123
- shift()删除数组第一个元素 改变原数组 arr.shift() # 234
- splice(a,num) 从a开始删除下标 num个元素下标 会改变原数组
- reverse() 反转数组 会改变数组
- concat(b) 合并数组 被合并的b放在后面 不改变原数组 用arr1+arr2 变成字符串
- slice(n,m) 查找数组 。返回查到的数组,从下标n 到下标m(不包含m)。一个数值,查到最后 。啪 没有p 不改变原数组
slice(0) >相当于拷贝数组 需要接收 - join() 数组转字符串 不会改变原数组
- sort排序 改变原素组 在10以内的数组 可以进行sort排序 大于10的要进行使用function(a,b){ return a-b;}
- .filter 过滤器
避免空指针异常 开发常用😁❤️ #if判断避免空指针
比较语句 arr[i]= ='a' 改为 >> 'a'= = arr[i];
遍历方式
- for in 遍历下标
var arr=[9,7,5,3,1,2,4,6,8];
for(var index in arr){
console.log(index);
}
- for of 遍历元素
var arr=[9,7,5,3,1,2,4,6,8];
for(var item of arr){
console.log(item);
}
- array.filter 要接收
var arr=[9,7,5,3,1,2,4,6,8];
var arr2=arr.filter(function(item){
return item>3;
}) //过滤为大于3的数组 不改变原来数组
console.log(arr2);
4.foreach遍历
内置对象之Date
方法集合
var time =new Date(); 获取时间对象
| 方法名 | 解释 |
|---|---|
| getFullYear() | 返回 Date 对象的年份,其值为4位数 |
| getMonth() | 返回 Date 对象的月份,其值介于0~11之间(注:0-1月份 11代表12月) |
| getDate() | 返回 Date 对象的日,其值介于1~31之间 |
| getHours() | 返回 Date 对象的小时数,其值介于0~23之间 |
| getMinutes() | 返回 Date 对象的分钟数,其值介于0~59之间 |
| getSeconds() | 返回 Date 对象的秒数,其值介于0~59之间 |
| getDay() | 返回 Date 对象的星期中的每一天,其值介于0~6之间(注:0-周日) |
封装年月日
function nowTime(){
var time=new Date();
return time.getFullYear()+'-'+((time.getMonth()+1)<10?('0'+(time.getMonth()+1)):(time.getMonth()+1))+'-'+time.getDay()+' '+(time.getHours()<10?('0'+time.getHours()):time.getHours())+':'+time.getMinutes()+':'+time.getSeconds();
}
alert(nowTime());
实现国庆倒计时
function nowTime(){
var now_time=new Date();
var time=new Date(2022,10-1,1);
var date_t=time-now_time;
var day=Math.floor(date_t/1000/60/60/24);
var hour=Math.floor(date_t/1000/60/60%24);
var minus=Math.floor(date_t/1000/60%60);
var seconds=Math.floor(date_t/1000%60);
document.getElementsByTagName('div')[0].innerHTML='距离国庆:'+day+'天'+hour+'小时'+minus+'分'+seconds+'秒';
};
var timer= setInterval(nowTime,1000);