资讯专栏INFORMATION COLUMN

js的函数和对象

Dean / 783人阅读

摘要:函数函数也是一个对象,对象能做的函数都能做。在函数中使用关键字声明的变量是局部变量,局部变量只能在函数内部使用,外部无法访问。

函数
- 函数也是一个对象,对象能做的函数都能做。
- 函数中可以保存可执行的代码,并且在需要的时候进行调用。
- 使用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
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96912.html

相关文章

  • [译]执行上下文、作用域链JS内部机制

    摘要:执行上下文作用域链和内部机制一执行上下文执行上下文是代码的执行环境,它包括的值变量对象和函数。创建作用域链一旦可变对象创建完,引擎就开始初始化作用域链。 执行上下文、作用域链和JS内部机制(Execution context, Scope chain and JavaScript internals) 一、执行上下文 执行上下文(Execution context EC)是js代码的执...

    caozhijian 评论0 收藏0
  • JS面向对象之三【this】 (对象函数之间关系)

    摘要:实际上就是做了这样一件事情显式的指定是回顾一下隐式模式显示模式观点里所有函数都接受个参数第一个第二个是函数被调用时一定会有这个参数如果你用调用函数就是显式的传递和如果你用语法直接调用函数那就去帮你偷偷的传递。 JS面向对象之三【this】 (对象和函数之间的关系) 上一篇,谈了对象和对象的关系,现在我们谈谈对象和函数的关系 先说结论,也就是观点1 观点1: JS里函数和对象没有关系,J...

    roland_reed 评论0 收藏0
  • jQuery Deferred对象

    摘要:给普通的操作指定回调函数对象的最大优点,就是它把这一套回调函数接口,从操作扩展到了所有操作。方法用于指定对象状态为已失败时的回调函数。执行完毕执行成功执行失败接收一个或多个对象作为参数,为其指定回调函数。 什么是deferred对象 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型...

    baoxl 评论0 收藏0
  • javascript引擎执行过程理解--语法分析预编译阶段

    摘要:所以觉得把这个执行的详细过程整理一下,帮助更好的理解。类似的语法报错的如下图所示三预编译阶段代码块通过语法分析阶段之后,语法都正确的下回进入预编译阶段。另开出新文章详细分析,主要介绍执行阶段中的同步任务执行和异步任务执行机制事件循环。 一、概述 js是一种非常灵活的语言,理解js引擎的执行过程对于我们学习js是非常有必要的。看了很多这方便文章,大多数是讲的是事件循环(event loo...

    molyzzx 评论0 收藏0
  • javascript系列--javascript引擎执行过程理解--语法分析预编译阶段

    摘要:所以觉得把这个执行的详细过程整理一下,帮助更好的理解。类似的语法报错的如下图所示三预编译阶段代码块通过语法分析阶段之后,语法都正确的下回进入预编译阶段。另开出新文章详细分析,主要介绍执行阶段中的同步任务执行和异步任务执行机制事件循环。 一、概述 js是一种非常灵活的语言,理解js引擎的执行过程对于我们学习js是非常有必要的。看了很多这方便文章,大多数是讲的是事件循环(event loo...

    malakashi 评论0 收藏0
  • JS修仙之一界本源

    摘要:时间一晃就是数月,齐云早已把界基本情况了解了,不过至于三座大山里隐藏的谜团却迟迟没有头绪。它是界本源之一。事实上,根本没有构造函数,或者人人都是构造函数。所以,明白这个界的一界本源,才能在这里畅游天地之间。 自计算机宇宙诞生以来,有很多大神通者在这里开天辟地,开创了很多界,有C、C++、Java等世界,它们彼此相连,其中有一处叫做JavaScript的世界,自被开辟以来吸引了很多修行者...

    I_Am 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<