function函数

需要注意的是JavaScript中的函数也是一个对象,所以函数也是在堆中保存的
JavaScript中的函数可以分为系统函数和自定义函数。
每个类型又分为:

a.不带参数的函数
b.带参数的函数
c.无返回值的函数
d.有返回值的函数

系统函数

1.概念:js的内置函数,可以直接拿来使用
2.要素:函数名称,参数,返回值
3.调用方式:使用函数名,并传参给函数,可以在任意地方使用系统函数
4.调用结果:函数返回值

自定义函数

1.概念:在很多时候,我们需要自己去创建一些特定功能的函数,叫自定义函数。
2.要素:

a.声明:用function这个关键字来声明函数
b.函数名称:英文开头的字符串。后面要有小括号
c.参数:若有,在小括号中用:逗号隔开。JavaScript中所有的参数传递都是按值传递的
d.函数体:用大括号:括起来
e.返回值:在函数体中,使用return返回。并且,return后不执行其他代码。

//函数声明的第二种方式,声明式函数
function a(x)//小括号内是参数
{return x*x;//两个大括号内是要执行的代码
}
//函数声明的第二种方式,赋值式函数
var a=function (x){return x*x;}

由于存在函数声明提升的过程,第一种方式在函数声明之前就可以调用函数,而第二种不行。

垃圾回收

-不能使用的对象的内存将会自动回收,这种功能称做垃圾回收。
-所谓不再使用的对象,指的是没有被任何一个属性(变量)引用的对象。
-垃圾回收的目的是,使开发者不必为对象的生命周期管理花费太多的精力。

预解析

  • 预解析 其实就是聊聊 js 代码的编译和执行
  • js 是一个解释型语言,就是在代码执行之前,先对代码进行通读和解释,然后再执行代码
  • 也就是说,我们的 js 代码在运行的时候,会经历两个环节 解释代码执行代码

解释代码

  • 因为是在所有代码执行之前进行解释,所以叫做 预解析(预解释)
    需要解释的内容有两个
    1.声明式函数:在内存中先声明有一个变量名是函数名,并且这个名字代表的内容是一个函数
    2.var 关键字:在内存中先声明有一个变量名
    看下面一段代码:
fn()
console.log(num)function fn() {console.log('我是 fn 函数')
}var num = 100

经过预解析之后可以变形为

function fn() {console.log('我是 fn 函数')
}
var numfn()
console.log(num)
num = 100
  • 赋值式函数会按照 var 关键字的规则进行预解析

作用域

  • 什么是作用域,就是一个变量可以生效的范围
  • 变量不是在所有地方都可以使用的,而这个变量的使用范围就是作用域

全局作用域

  • 全局作用域是最大的作用域
  • 在全局作用域中定义的变量可以在任何地方使用
  • 页面打开的时候,浏览器会自动给我们生成一个全局作用域 window
  • 这个作用域会一直存在,直到页面关闭就销毁了
// 下面两个变量都是存在在全局作用域下面的,都是可以在任意地方使用的
var num = 100
var num2 = 200

局部作用域

  • 局部作用域就是在全局作用域下面有开辟出来的一个相对小一些的作用域
  • 在局部作用域中定义的变量只能在这个局部作用域内部使用
  • 在 JS 中只有函数能生成一个局部作用域,别的都不行
  • 每一个函数,都是一个局部作用域
// 这个 num 是一个全局作用域下的变量 在任何地方都可以使用
var num = 100function fn() {// 下面这个变量就是一个 fn 局部作用域内部的变量// 只能在 fn 函数内部使用var num2 = 200
}fn()

函数也可以作为参数

-函数也是一个对象,所以函数和其他对象一样也可以作为一个参数传递给另外一个函数。
-但是要注意的是使用函数作为参数时,变量后面千万不要加(),不加()表示将函数本身作为参数,加上以后表示将函数执行的结果作为参数。

JavaScript中的对象

对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性。

对象的分类:

1)内建对象:由ES标准中定义的对象,在任何的ES的实现中都可以使用。比如:Math,Number,Boolean,Function,Object...
2)宿主对象:由JS运行环境提供的对象,目前来讲主要指浏览器提供的对象。比如BOM,DOM(它们是指两组对象,而不是两个对象)
BOM是Browser Object Mode的缩写,即浏览器对象模型,用来获取或设置浏览器的属性、行为。DOM是Document Object Model 的缩写,即文档对象模型,用来获取或设置文档中标签的属性。
3)自建对象:由开发人员自己创建的对象。

对象的基本操作:

<script>var obj=new Object();//创建一个对象(第一种方式)obj.name="Acapplella";//向对象obj中增加一个属性obj.nameobj.name="Good!";//修改obj.name的值//访问对象的属性直接用对象名.属性名就可以了document.write(obj.name);delete obj.name;//删除obj.namevar oj={//创建一个对象的第二种方式name='Acapplella';age='18';}
</script>

对象属性访问的两种方式:

1.对象.属性名 2.对象['属性名']

JvavScript中的函数与对象相关推荐

  1. JavaScript中的函数是对象?

    函数是第一类对象(first-class object),被称为一等公民.函数与对象共存,我们也可以认为函数就是其他任意类的对象. 那么今天,就让我们一起简单聊一聊JavaScript的函数吧! 目录 ...

  2. JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype

    一)函数 A)JS中的函数的定义格式: function add(a,b) { var sum = a+b; document.write("两个数的和是:" + sum); // ...

  3. SICP2——Python中使用函数构建对象

    一.使用对象构建抽象 1.1 数据抽象 现在到了数学抽象中最关键的一步:让我们忘记这些符号所表示对象.-根本不必考虑它们到底代表着什么东西. 上一篇文章主要强调的是对数据的操作以及这些操作之间的组合与 ...

  4. JavaScript如何声明对象、函数以及对象中的函数(即方法)

    目录 声明对象的2种最常见方法 声明函数的2种最常见方法 在对象中声明函数 声明对象的2种最常见方法 1) var Zhihuijun = {name:'彭志辉',age:28,upName:'稚晖君 ...

  5. 【Kotlin】Kotlin 中使用 Lambda 表达式替代对象表达式原理分析 ( 尾随 Lambda - Trailing Lambda 语法 | 接口对象表达式 = 接口#函数类型对象 )

    文章目录 一.尾随 Lambda - Trailing Lambda 语法 二.Kotlin 中使用 Lambda 表达式替代对象表达式原理 1.Lambda 替换对象表达式 2.原理分析 3.示例分 ...

  6. C++中虚函数工作原理和(虚)继承类的内存占用大小计算

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7883531 一.虚函数的工作原理       虚函数的实现要求对象携带额 ...

  7. JS函数和对象(一)

    在本文章中,将对JS中的函数和对象进行一些讲解,不对之处还请之处 一.JS中的函数 1.1无参函数 其形式如下代码所示 function box(){alert("我是一个函数,只有被调用才 ...

  8. C++中虚函数工作原理

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7883531 一.虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这 ...

  9. R语言data.table导入数据实战:data.table中编写函数并使用SD数据对象

    R语言data.table导入数据实战:data.table中编写函数并使用SD数据对象 目录 R语言data.table导入数据实战:data.table中编写函数并使用SD数据对象 #data.t ...

最新文章

  1. SAP MM 模块调研问卷样例
  2. 复杂个人信息输出程序python_练习题-修改个人信息程序
  3. Ubuntu 虚拟机空间不足增加空间笔记
  4. spring aop 环绕通知around和其他通知的区别
  5. 【.NET Core 3.0】小技巧 || 原生DI一对多注入
  6. stm32_跑马灯程序
  7. 插值方法: 拉格朗日插值--逐步插值的自适应算法
  8. 【智能无线小车系列九】在树莓派上使用USB摄像头
  9. 【推荐系统】逻辑回归(LR)在推荐系统中的使用
  10. 初探华尔街期权量化交易的奥秘
  11. 高颜值生物医学在线画图工具
  12. Wi-Fi放大器、中继、桥接和mesh组网的理解
  13. AD单片机九齐单片机NY8B062D SOP16九齐
  14. 数据结构-期末复习重要知识点总结
  15. Java Fx 使用详解
  16. js将php时间戳转换成格式化日期
  17. 图解GHOST使用教程
  18. MPC控制器设计,模型预测控制,线性时变模型预测控制,LTV MPC,提供理论讲解与应用实现
  19. 电脑计算机可以删掉什么影响,drivers文件夹是否可以删除?电脑删除drivers文件夹的注意事项...
  20. SET UNUSED列可以恢复吗?

热门文章

  1. python queue get 方法_Python语言中的Queue(队列)
  2. CSS如何水平垂直居中?
  3. 网路防火墙iptables
  4. Django项目:CMDB(服务器硬件资产自动采集系统)--11--07CMDB文件模式测试采集硬件数据...
  5. 整个技术架构结构设计
  6. hdu 3530 单调队列 **
  7. 在Microsoft VS.net 2005下开发Linux环境的网站应用
  8. 根据自己平时的经验写的针对SQLSERVER操作的通用类库
  9. kubernetes之五:资源管理
  10. react-native gradle