JavaScript复习

mac2024-08-02  63

数据类型

基本数据类型 string number boolean 复杂数据类型(引用类型) Array Date Object RegExp String Number Boolean 如何获取一个数据的数据类型 使用关键字 typeof typeof返回值为string类型 String Number Date 首字母大写的都是构造函数 两个空的类型 null undefined 什么时候对象会是null //变量不可能为null值,除非手动去设置 什么时候要给对象赋值为null? //要解除对象的占用(引用)的时候

全等于和等于的区别

=== 全等 类型和值都要进行比较 == 等于 只比较值

in关键字

最常用的是在for in 循环中 遍历对象的键

for(var k in obj){ console.log(typeof k); console.log(k); } 判断属性是否存在于对象中 //语法 属性名 in 对象 var propName = "name"; var isExsit = propName in obj; console.log(isExsit);

注意: 使用in关键字的时候,属性名称为字符串类型,需要用引号引起来 注意: in关键字操作数组的时候判断的是索引是否存在,而不是值

var arr = [4, 6, 3, 4]; console.log(0 in arr);(true) //这里会做一个隐式的类型转换 console.log("0" in arr);(true) 如何判断数组中是否存在指定的值 //1. for循环 如果找到了就输出 //2. indexOf 返回值为指定的数对应的索引,如果没有找到 返回-1 console.log(arr.indexOf(9)); for(var i=0;i<arr.length;i++){ if(arr.indexOf(i) == target){ console.log(arr.indexOf(i)) } }

新建对象

var now = new Date(); console.log(now); //GMT 格里尼治标准时间 //UTC 世界协调时间

值类型和引用类型

说明

值类型: string number boolean undefined 存储的就是数据本身的变量就是值类型的数据 引用类型:object 存储的是数据在内存中的地址,数据在内存中单独存储 就是引用类型的数据

引用类型赋值 引用类型赋值的时候,是将变量中存储的地址复制一份单独存储,但是两个变量共享同一个对象 修改其中一个对象,两外一个引用来访问的时候,也会访问到修改后的对象 ###特征 值类型的赋值 直接将存储的数据复制一份进行赋值,两份数据在内存中是完全独立的 引用类型相反 在函数中的使用 值类型做函数的参数 函数内部的变量,也就是形参和实参只是简单的赋值操作,两个数据独立存储于内存中的 在函数内部对形参进行修改,不会影响外面的变量 引用类型做函数的参数 还是把实参存储的地址赋值给了形参,在函数内部,形参同样也指向该对象, 所以,在函数内部对该对象进行修改,会影响到外面的变量 注意:如果在函数内部重新创建对象,为该形参赋值,那么两个对象将不再有关系 修改其中一个,另外一个不受影响

对象的动态特征

对象的动态性是指,在对象创建出来之后,为对象添加新的属性或者方法 使用点语法进行赋值的时候,如果对象存在该属性,是修改操作 //如果对象不存在该属性,是给该对象新增属性并且赋值 对象是不是就是键值对儿的集合 // 对象名[属性名] 注意这里的属性名 是字符串

console.log(obj["name"]);

//这里如果使用的键不是字符串类型,会隐式的转换成字符串类型 /新增属性、方法的方式有: //1.点语法 //2.通过 [] 的形式去添加

逻辑中断

即c中的短路

delete关键字

//delete关键字可以用来删除对象的属性,还有未使用var声明的变量 // var num = 10; // var result = delete num; // console.log(result);//false //delete关键字有返回值 用来表示删除属性是否成功 //如果删除的是不存在的属性,返回值为true var result= delete obj.gender; console.log(result); //如果删除的属性存在原型当中,那么返回值为true,但是并未删除 console.log(obj.toString()); //[object Object] var result = delete obj.toString; console.log(result);//true console.log(obj.toString());//[object Object]

定义函数

1.函数声明

function funcName(){ //函数体 } //2.函数表达式 //在使用函数表达式声明函数的时候,function后面可以跟函数名 //但是 这个函数名。只限在函数内部使用,外部无法访问 var funcName1 = function name(){ // console.log("谁说不可以"); } funcName1(); //3.Function var funcName2 = new Function();

DOM操作复习

//增 //document.createElement //appendChild //删 //removeChild //改 //style //id //className //innerHTML //innerText //查 //getElementById //getElementsByTagName //getELementsByClassName

异常处理

异常最大的特征,就是一旦出现异常,后面的代码将不会再执行 //那为了保证后面代码在出现异常之后,还能继续执行,所以就要进行异常处理 注意 语法异常 try catch无法捕获 异常捕获语句

//try catch finally try{ a(); // //可能会出现问题的代码 // // throw "你的代码坏了!!!"; // } // catch(e){ // // //出现异常后的处理代码 // console.log(e); // } // // function test() { // console.log("我是之后的代码"); // } try{ sum(0); } catch(e){ console.log(e.errMsg); } //异常捕获语句的完整形式 try{ //可能出现异常的代码 xyz(); } catch(e){ //出现异常后的处理代码 } finally{ console.log("我是finally中的代码"); //不管有没有出现异常,这里的代码都会执行 //node.js //做释放资源的操作。 } 手动抛出异常信息 使用 throw关键字 unction sum(num1, num2){ if(num1 == undefined || num2 == undefined){ throw { errMsg: "能不能好好玩耍了,乖乖给我传参!!", errCode: 13888888888 }; }else{ return num1 + num2; } }

面向对象

概念

面向过程的思维方式: //就是把解决问题的关注点,放到解决问题的每一个详细的步骤上面! 面向对象的思维方式: //就是把解决问题的关注点,放到解决问题需要的一些列对象身上 在JS当中 什么是对象? //键值对儿的组合就是对象 现实生活中的对象的特征对应到JS当中是对象的属性!

现实生活中的对象的行为对应到JS当中就是对象方法

//如何在一句话中找出所有的对象 //名词提炼法!!! //小明在公交车上牵着一只叼着香肠的狗 var xm = { name:"小明", age:12, liuDog:function () { console.log("遛狗啦!!!"); } } 编程 要求创建出来一个div 并且设置样式,然后加到body标签当中 面向过程 1.创建div // var div = document.createElement("div"); // //2.设置div的样式 // div.style.height = "200px"; // div.style.width = "200px"; // div.style.border = "1px solid pink"; // //3.添加div到body中去 // document.body.appendChild(div); 面向对象 //使用面向对象的思维方式来解决js问题 $("body").append("<div style='width:200px;height:200px;border:1px solid pink'></div>")

面向对象是对面向过程的封装,有了面向对象并不意味着,就可以抛弃面向过程 为什么要学习面向对象 看懂框架 //编写代码的时候的原则:DRY //Don’ t repeat yourself 使用函数封装 使用函数将代码封装,使得复用性更高

使用函数封装带来的问题:

//1.全局变量污染 //2.代码结构不够清晰,维护不方便 使用对象封装 /使用对象进行封装后的优势 //1.暴露在全局的只有一个对象名 不会造成全局变量污染 //2.使用对象将代码进行功能模块的划分,有利于日后的维护 little tip: itar 敲tab就可以出现for循环

最新回复(0)