js的函数和对象

函数

- 函数也是一个对象,对象能做的函数都能做。
- 函数中能够保留可实行的代码,并且在须要的时刻举行挪用。
- 运用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种基础数据范例的又一种范例
- 对象是一种复合数据范例,在对象中能够保留差别范例的属性

对象的运用:

建立对象:

  1. 组织函数体式格局: var obj = new Object();
  2. 对象初始化器体式格局: var obj={};
  3. 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
}
    原文作者:RoOK1E
    原文地址: https://segmentfault.com/a/1190000015995261
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞