JavaScript篇

111 阅读7分钟

JavaScriptd的输出方式

  • 1.页面输出
  • document.write("页面输出方式");
  • 2.控制台输出方式
  • console.log("控制台输出方式");
  • 3.窗口弹出方式
  • alert("窗口弹出");

JS数据类型

基本数据类型

基本数据类型概述:基本数据类型都是单一的值,如"hello",123,true,值和值之间没有关系
基本数据类型:Number String Null Undefined Boolean

引用数据类型

引用数据类型:Object function(一种特别的对象,可以执行) Array(一种特别的对象,有数值下标,内部数据是有序的)

二者的区别:
基本数据类型:基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量不会影响其他的变量,比较两基本数据类型,比较的是

       var a = 10;
       var b = 10;
       console.log(a == b);//当比较两个基本数据类型时,比较的是值

引用数据类型:对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保存的是对象的内存地址,(对象的引用)如果两个变量保存的是同一个对象引用,当通过一个变量修改属性时,另一个也会受到影响

 var obj1 = new Object();
      var obj2 = new Object();
      console.log(obj1);//在堆内存中开辟内存空间,即内存地址
      console.log(obj2);//在堆内存中新开辟内存空间
      //当比较两个引用数据类型时,它是比较的对象的内存地址,两个对象一样,但是内存地址不一样,返回false
      console.log(obj1 == obj2);

undefined和null的区别

undefined是表示变量定义了但未赋值

var a;
console.log(a);

null表示变量定义了也赋值了,但是赋的值是null

var a = null;
console.log(a);

什么时候赋值null

  • 1)初始赋值,表名将要赋值的值类型是对象
  • 2)结束前让对象称为垃圾对象,被垃圾回收器回收
var f = fun();
f = null;

判断数据类型的方法

  • 1)typeof:可以判断undefined、数值类型、字符串、布尔值、function,但是区别不开object与array,null和object,判断这两种类型,一般返回都是object
  • 2)instanceof:判断对象的具体类型

强制类型转换

1.转换成string类型

1)调用被转换类型的toString()方法,写法为a.toString()
-该方法不会影响原变量,会将结果返回
-null和object没有toString()方法,使用会报错

    var a = true;
    var b = a.toString();
    console.log(typeof b);
    console.log(b);

2)调用string()函数,将转换的数据作为参数传递给函数,写法为string()
-该函数的结果会返回,需要将结果赋值给一个变量并输出
-该函数适用于null和undefined

    var a = null;
    var a = String(a);
    console.log(typeof a);
    console.log(a);//null

    var b = undefined;
    b = String(b);
    console.log(typeof b);
    console.log(b);//undefined

3)任意的数据类型 +""

    var e = 6;
    e = e +"";
    console.log(typeof e);//string

2.转换为number类型

1)Number()函数,只针对纯数字的字符串有效,包含英文的字符串进行转换,则会返回NaN,空串则返回0

  • -布尔值转换成数字(true->0,false->1)
  • -null转换成数字(null->0)
  • -undefined转换成数字(undefined->NaN)
    a = "abc";
    b = Number(a);
    console.log(b);//NaN

2)parseInt()函数,只取字符串中的有效整数
3)parseFloat()函数,将字符串转换为浮点数
ps:parseInt()和parseFloat()转换非字符串型,会将数据先转换成string类型,然后再转换

3.转换为boolean类型

-数字类型的转换为bool类型,除了0和NaN为false,其他都为true
-字符串类型转换,除了空字符串为false,其他都为true
-null 和 undefined 转换为false
-对象也会转换为true

语句

条件语句

if...else

第一种用法

if (条件){ 
    语句... //条件为 true 时执行的代码
}

第二种用法

if (条件){ 
    语句1... //条件为 true 时执行的代码
}else{
    语句2... //条件为 false 时执行的代码
}

第三种用法

if (条件1){ 
    语句1... //条件满足条件1 时执行的代码
}else if(条件2){
    语句2... //条件满足条件2 时执行的代码
}else{
    语句3...//条件1和条件2都不满足时执行此代码
}

switch...case

        switch语句
        switch(条件表达式){
            case 表达式:
                语句……;
                // 使用break可以退出switch语句
                break;
            case 表达式:
                语句……;
                break;
            default:
                语句……;
                break;
        }

在执行switch语句时,会依次将case后的表达式与switch后的条件表达式的值进行全等比较

  • 如果比较结果为true ,则从当前case处执行代码,当前的case语句都会执行,可以再case语句后加break,保证只执行当前case后面的语句
  • 如果比较结果为faulse,则继续向下比较
  • 如果所有的比较结果都为faulse,则执行default语句 ps:凡是能使用switch语句的,都能使用if语句实现
    例如:大于60的都显示为合格,否则显示为不合格
         var num = 99;
         switch(parseInt(num / 10)){
            case 6:
            case 7:
            case 8:
            case 9:
            case 10:
                console.log("合格");
                break;
            default:
                console.log("不合格");
                break;
         }
         
       //  第二种方法
        var score = 89;
        switch(true){
            case  score >= 60:
                console.log("合格");
                break;
            default:
                console.log("不合格");
                break;
        }

循环语句

循环语句:用来控制语句执行的次数

for循环

for(初始化表达式 ; 条件表达式 ; 更新表达式){ 
语句...
}

while循环

while(条件表达式){ 
    语句...
}
例子:
var i = 1; 
while (i <= 10) { 
    console.log(i); i++; 
}

do...while循环

do{ 
语句... 
}while(条件表达式);

跳转控制 break:<1>关键字可以用来退出switch和循环语句(break只对最近的循环有效)

        for(var i=0; i<5; i++){
            console.log(i);
            if(i == 2){
                break; //对for循环起作用而不是对if语句起作用
            }
        }

<2>可以为for循环语句创建一个label,来标识当前的循环 语法: label:循环语句

    outer: for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
        if (j == 5) {
            break outer;
        }
        console.log(j);
    }
}

continue:关键字用来跳过当次循环(只会对最近的循环有效)

对象

对象概述

对象概述:对象属于一种复合数据类型,在对象中可以保存多个不同数据类型的属性

对象的分类

  1. 内建对象:由ES表中中定义的对象,任何的ES的实现中都可以使用 例如:Math、String、Boolean、function、Object\
  2. 宿主对象:由JS的运行环境提供的对象,目前主要是浏览器对象
    例如:BOM、DOM\
  3. 自建对象:由开发人员自己创建的对象

创建对象

创建对象

使用new关键字调用的函数是构造函数(构造函数是专门用来创建对象的函数)

    var obj = new Object()

向对象中添加属性

向对象中添加属性,在对象中保存的值称为属性,向对象中添加属性的语法为

  • 语法:对象.属性名 = 属性值
    
        obj.name = "海绵宝宝";
        obj.height = 120 ;

读取属性

读取对象中的属性,如果读取对象中没有的属性,不会报错,则会返回undefined

  • 语法:对象.属性名
    
        console.log(obj.name);
        console.log(obj.id);

修改对象的属性值

  • 语法: 对象.属性名 = 新值
    
        obj.name = "派大星";

删除对象的属性值

  • 语法:delete 对象.属性名
    
        delete obj.name;

使用特殊的属性名

对象的属性名没有命名规范,若要使用特殊的属性名

  • 语法:对象["属性名"] = 属性值
    

输出时也需要用此形式,[]可以直接传递一个变量,变量的值是多少,最后输出就是多少

        var obj["12"]= 123;
        var a = "123";
        console.log(obj["123"]);
        console.log(obj[a]);

in 运算符

  • 属性值可以是任意的数据类型,也可以是对象
  • in 运算符,可以检查一个对象中是否含有指定的属性,如果有,则返回TRUE,如果没有则返回FALSE
  • 语法:"属性名" in 对象
    
       console.log("name" in obj);