函数
- 函数也是一个对象,对象能做的函数都能做。
- 函数中能够保留可实行的代码,并且在须要的时刻举行挪用。
- 运用typeof搜检函数时,会返回 function
function fun(){
return 'function'
}
console.log(typeof fun); // function
函数的建立
1.函数声明
function函数名(形参1,形参2,…形参N){
函数体
}
function sum (num1,num2){
return num1+num2
}
2.函数表达式
var 函数名=function(形参1,形参2,…形参N){
函数体
}
var sum=function(num1,num2){
return num1+num2
}
函数的挪用
函数挪用:函数对象+()
function fun(){
console.log('我是一个function');
}
fun() //我是一个function
函数的参数
形参(形式参数)
- 定义函数时能够在函数定义数目不等的形参,多个形参之间运用,离隔
- 定义形参就相当于在函数中声清楚明了对应的变量然则并不赋值
- 形参会在函数挪用的时刻赋值
实参(现实参数)
- 函数挪用时,能够在()通报实参
- 实参会赋值给对应的形参
- js解析器不会搜检实参的范例和数目
- 能够通报恣意范例的实参(基础数据范例、对象、函数)
- 能够通报恣意数目的实参
返回值
- 在函数中能够经由过程 return 来设置返回值
- 语法:return 值;
- 返回值将会作为函数的实行效果返回,能够定义一个变量来吸收返回值
- 假如return后不跟值,或许不写return则相当于return undefined
- return后的一切的代码都不会实行,return一实行函数马上完毕
- 任何范例的值都能够作为函数的返回值
function num(){
console.log('这是一个函数')
return 100;
}
console.log(fun()) //这是一个函数
//100
- 函数的return语句确实许可不编写在函数体的最后面
- 一旦return语句不在函数体的最后面 - return语句以后的代码都不再实行
function fn(){
console.log('这是return语句之前...');
return;
console.log('这是return语句以后...');
}
console.log(fn()); // 这是return语句之前...
//undefined
作用域
作用域就是变量的作用局限,一个变量在哪些局限中可见
全局作用域
- 全局作用域在页面加载时建立,在页面封闭时烧毁。
- 直接在script标签中编写的内容,都在全局作用域中
- 在页面中有一个全局对象window,代表的是全部的浏览器窗口
在全局作用域中建立的变量都邑作为window的属性保留
在全局作用域中建立的函数都邑作为window的要领保留
- 在全局作用域中建立的变量和函数都是全局变量和函数,能够在页面的恣意位置接见。
var a=10;
console.log(a); //10
函数作用域(部分作用域)
- 函数作用域在函数挪用时建立,在挪用完毕时烧毁。
- 函数每实行一次就会建立一个新的函数作用域。
- 在函数中运用var关键字声明的变量是部分变量,部分变量只能在函数内部运用,外部无法接见。
- 假如不运用var关键字声明变量,则变量会变成全局变量。
var a=10;
function fun(){
var b=20;
console.log(a); //10
console.log(b); //20
}
全局作用域不能接见部分变量
function fun(){
var a=10;
}
console.log(a); // a is not defined;
对象
- 对象是一个区分于5种基础数据范例的又一种范例
- 对象是一种复合数据范例,在对象中能够保留差别范例的属性
对象的运用:
建立对象:
- 组织函数体式格局: var obj = new Object();
- 对象初始化器体式格局: var obj={};
- Object.create()要领: Object.create();
读取对象的属性:
对象.属性名(不适用于庞杂定名的属性称号)
var person ={
sex:'man',
age:30
}
console.log(person.sex); //man
对象[“属性名”] (适用于庞杂定名的属性称号)
var obj = {
'Type-Content' : 'text/html',
}
console.log(obj['Type-Content']);// text/html
向对象中增加(修正)属性:
对象[“属性名”]
var iLike={
hobby:'听歌'
}
}
iLike['hobby']='睡觉';
console.log(iLike.hobby) //睡觉
对象.属性名
var person={
name:'55开'
}
person.name='PDD';
console.log(person,name) //PDD
罗列属性
for…in:该要领顺次接见一个对象及其原型链中一切可罗列的属性
var obj={
name:'孙悟空',
age:'18',
hobby:function(){
console.log('打妖怪')
}
}
for(var i in obj ){
console.log(i) // name age hobby
}
检测对象的属性
- 运用in关键字 假如属性存在返回true 不存在返回false
var obj ={
name: 'javascript'
};
console.log('name' in obj); //true
- 运用Object对象的hasOwnPhasOwnProperty()要领 假如属性存在返回true 不存在返回false
var obj ={
name: 'javascript'
};
console.log(obj.hasOwnProperty('name')); //true
- 运用undefined推断 假如属性存在返回false 不存在返回true
var obj ={
name: 'javascript'
};
console.log(obj.name === undefined); // false
- 运用if语句举行推断
var obj ={
name: 'javascript'
};
if(obj.name){console.log('属性存在')} //属性存在
删除对象的属性
能够用delete操作符删除一个不是继续而来的属性
var obj=new Object();
obj.name='孙悟空';
obj.age='18';
delete obj.age; //删除对象的自有属性
for(var i in obj){
console.log(i); //name
}