js基础关于数据类型学习的笔记

103 阅读7分钟

任务⭐

  1. js三种引入方式
  2. js的数据类型
  3. 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

= =值 === 值和数据类型同时相等

自增自减

  1. 不赋值 num+ + num--
  2. 赋值❤️ 谁在前 谁先运算 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 的异同点 #面试题⭐⭐

UndefinedNull虽然是两种不同的基本数据类型,但是在某些情况也存在相同之处,下面看一下它们两者相同点和不同点。

(1)相同点

第一:UndefinedNull两种数据类型都只有一个字面值,分别是undefinednull.
第二:UndefinedNull类型在转换为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)不同点

第一:nullJavaScript的关键字,而undefinedJavaScript的一个全局变量,也就是挂载在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>');//换行
}

数组

数组创建方法

  1. var arr=new Arrary(11,22,33,445,55);
  2. var arr=[];

数组的方法

  1. 数组名.push(值) 意思就是在数组的最后面添加一个值
  2. 数组名.unshift(值); 意思就是在数组的最前面添加一个值
  3. 数组名.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);

数组的常见方法 ⭐⭐面试 #面试题:数组的常见方法

  1. push() 数组尾部添加 改变原数组 var arr=[1,2,3,4]; arr.push('哈哈'); # 1,2,3,4,哈哈
  2. unshift()数组头部添加内容 改变原数组 arr.unshift('哈哈'); # 哈哈,1,2,3,4
  3. pop() 删除末尾的元素 改变原数组 arr.pop(); # 123
  4. shift()删除数组第一个元素 改变原数组 arr.shift() # 234
  5. splice(a,num) 从a开始删除下标 num个元素下标 会改变原数组
  6. reverse() 反转数组 会改变数组
  7. concat(b) 合并数组 被合并的b放在后面 不改变原数组 用arr1+arr2 变成字符串
  8. slice(n,m) 查找数组 。返回查到的数组,从下标n 到下标m(不包含m)。一个数值,查到最后 。啪 没有p 不改变原数组
    slice(0) >相当于拷贝数组 需要接收
  9. join() 数组转字符串 不会改变原数组
  10. sort排序 改变原素组 在10以内的数组 可以进行sort排序 大于10的要进行使用function(a,b){ return a-b;}
  11. .filter 过滤器

避免空指针异常 开发常用😁❤️ #if判断避免空指针

比较语句 arr[i]= ='a' 改为 >> 'a'= = arr[i];

遍历方式

  1. for in 遍历下标
var arr=[9,7,5,3,1,2,4,6,8];
    for(var index in arr){
        console.log(index);
    }
  1. for of 遍历元素
var arr=[9,7,5,3,1,2,4,6,8];

    for(var item of arr){

        console.log(item);

    }
  1. 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);