JavaScript函数和对象知识点整理
JavaScript:函数
定义、创建方式、优点与函数提升、作用域
函数的定义
通俗易懂的说就是可以实现代码的复用,降低偶合度;
函数的创建方式:
-
字面量创建函数
关键字 自定义函数名称【可省略】 (参数)【0~多个】{
函数体:多个语句组成的;
}
例: function JG445(){ console.log("A"); } JG445()//A(函数的调用) 自定义函数名A,可以实现函数功能;
-
命名函数表达式
关键字 自定义函数 赋值符号 关键字 函数名称(参数【0~多个】){
函数体:多个语句组成的
}
例:let merry=function JG445(){ console.log("B"); } merry.name==JG445 自定义函数名B,只是函数的属性(即函数的名字),但无函数功能(使用时会报错)
-
匿名函数表达式
关键字 自定义函数 赋值符号 关键字(function) (参数【0~多个】){
函数体:多个语句组成的(函数表达式)
}
例:let arr = function () { console.log("C"); }
-
箭头函数
格式:
关键字 变量名 赋值符号 ()=>{
let JG445 = ( )=>{} }
需求:带参数(1个)
let JG445 = a = > { }
需求:带多个参数
let JG445 = (a,b )=> { }
需求:返回值
let JG445 = (a,b )=>
+返回值
比如下面的就返回a的值:
let JG445 = (a,b )=> a
//会返回a的值
注:只有当return存在一个时才使用
如果一个函数只有一条执行语句,可以进行箭头函 数的使用
let funcName=function(hehe){ hehe+2; } let funcName = (hehe) => hehe + 2
箭头函数的优点:
1:比普通声明函数更简洁;
2:只有一个参数时,可以不用小括号;
3:只有一条执行语句时,可以不用大括号;
4:只有一条return时,可以不用写return;
5:不会把自己的this绑定到函数上;
函数 (参数)
参数:
放在函数的小括号里
arguments:保存的实参所有内容;(伪数组)
参数分为两种:
形式参数(形参):
函数在声明时,写在小括号里的变量;
形参的名称是自定义的。
let arr = function (A,B) { //A,B就是形参 console.log("C"); }
实际参数(实参):
函数在调用时,写在小括号里的数;
arr(5,2);
5,2就是参数。
注:在JS中形参与实参的个数可以不相等。
形参与实参相同个数:
以下两种情况都不会报错。
如果形参比实参多:
多的形参的值是undefined。
如果实参比形参多:
多的实参可以通过arguments进行获取;
例:arguments[i],i是下标(伪数组对象)
不定参数
多出的实参,以数组形式存储
例:function JG445(a,b,…c){
console.log(a);//1
console.log(b);//2
console.log©;//[3,4,5,6,7]
}
JG445(1,2,3,4,5,6,7);
默认参数
例:function JG445(a=0,b=1){
console.log(a);
console.log(b);
}
JG445();
函数提升:提升以字面量声明的函数
变量提升和函数提升:变量提升和函数提升在相同情况下函数提升的权重要比变量提升的大;
作用域(全局作用域、局部作用域)
1.全局变量:
声明在函数外部的变量(所有没有let(es6)直接赋值的变量都属于全局变量)
2.局部变量:
声明在函数内部的变量(所有没有let(es6)直接赋值的变量都属于全局变量)
JavaScript:对象
在JavaScript中所谓的对象就是基础的变量类
创建对象的方式
1:字面量方式
let mobile = { }
2:构造函数方式
let mobile = new Object ( );
对象的赋值方式
let mobile = { name:"HUAWEI", screen:5.5 }
对象的使用
let person1 = { username: "JG445", password: 123, qian: 100000 };
使用的需求:增 删 改 查
1:增加 person1.gender = "male"
**注!**增加对象的属性值,即该属性值是不存在的。
如果该属性值存在,则该语句实为修改语句。
2:删除 delete parson1.qian
**注!**如果删除了某一个属性,然后又对删除的属性进行查询。
系统不会报错,只返回undefined
3:修改 parson1.qian=700000
4:查询: parson1.qian// 100000
当我的属性名是字符串变量的时候
let str = "username"
console.log(parson1[str]) // 100000
注:一个变量可以获取不同的属性值
对象的方法
方法名:talk: function ( ) { }
talk: function ( ) { console.log("say hello to everybody"); }
方法的调用
qiulei.talk( );
方法和属性的区别
属性是一个变量,用来表示一个对象的特征,如颜色、大小、重量等;方法是一个函数,用来表示对象的操作,如奔跑、呼吸、跳跃等。
方法的删除
delete qielei.talk; 不需要加小括号
注:如果调用删除的方法,系统会报错 xxx is not a function
方法的调用
person1["talk"]();
person1.talk();
调用当前对象的方法改变当前对象的值