JavaScript基础08-day10【函数的返回值、实参、立即执行函数、方法、全局作用域、函数作用域、提前声明、this、工厂方法创建对象、构造函数】
学习地址:
- 谷粒学院——尚硅谷
- 哔哩哔哩网站——尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通)
JavaScript基础、高级学习笔记汇总表【尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通)】
目 录
P53 53.尚硅谷_JS基础_函数的返回值 11:21
P54 54.尚硅谷_JS基础_实参可以是任何值 21:50
函数返回值练习1
函数返回值练习2
函数返回值练习3
P55 55.尚硅谷_JS基础_返回值的类型 11:42
P56 56.尚硅谷_JS基础_立即执行函数 04:49
P57 57.尚硅谷_JS基础_方法 15:30
将函数作为对象的属性保存
枚举对象中的属性【使用for ... in 语句】
P58 58.尚硅谷_JS基础_全局作用域 21:23
作用域
声明提前
变量的声明提前
函数的声明提前
P59 59.尚硅谷_JS基础_函数作用域 21:41
函数作用域
函数作用域的声明提前特性
P60 60.尚硅谷_JS基础_debug 13:54
局部变量/全局变量【小练习】
火狐浏览器debug
谷歌浏览器debug
ie浏览器debug
P61 61.尚硅谷_JS基础_this 11:03
P62 62.尚硅谷_JS基础_this补充 05:39
P63 63.尚硅谷_JS基础_使用工厂方法创建对象 10:48
使用工厂方法创建对象【大批量的创建对象】
P64 64.尚硅谷_JS基础_构造函数 24:56
instanceof:检查一个对象是否是一个类的实例
this使用情况的总结
P53 53.尚硅谷_JS基础_函数的返回值 11:21
创建一个函数,用来计算三个数的和。
可以使用 return 来设置函数的返回值,语法:return 值;return后的值将会作为函数的执行结果返回,可以定义一个变量,来接收该结果。在函数中return后的语句都不会执行。
- 如果return语句后不跟任何值就相当于返回一个undefined;
- 如果函数中不写return,则也会返回undefined;
- return后可以跟任意类型的值。
P54 54.尚硅谷_JS基础_实参可以是任何值 21:50
函数返回值练习1
定义一个函数,判断一个数字是否是偶数,如果是返回true,否则返回false。
函数返回值练习2
定义一个函数,可以根据半径计算一个圆的面积,并返回计算结果。
函数返回值练习3
创建一个函数,可以在控制台中输出一个人的信息,可以输出人的 name age gender address。
实参可以是任意的数据类型,也可以是一个对象。
当我们的参数过多时,可以将参数封装到一个对象中,然后通过对象传递。
实参可以是一个对象,也可以是一个函数。匿名函数作为实参,传递给函数。
P55 55.尚硅谷_JS基础_返回值的类型 11:42
返回值可以是任意的数据类型,也可以是一个对象,也可以是一个函数。
函数名+()返回的是这个函数的返回值,函数名:返回的是这个函数,fun3的返回值是fun4,所以fun3()=fun4,又fun4()返回“我是fun4”,所以fun3()()=“我是fun4”。
P56 56.尚硅谷_JS基础_立即执行函数 04:49
直接这样声明函数,会报错。{}内的内容,被当成了一个代码块,浏览器不认识“function()”。
// 加括号表示整体!
用“()”将函数体圈起来,表示这是一个整体(不是独立部分),不报错!
立即执行函数:函数定义完,立即被调用,这种函数叫做立即执行函数,立即执行函数往往只会执行一次。
P57 57.尚硅谷_JS基础_方法 15:30
将函数作为对象的属性保存
函数也可以称为对象的属性,如果一个函数作为一个对象的属性保存,那么我们称这个函数是这个对象的方法。
调用这个函数就说调用对象的方法(method),但是它只是名称上的区别没有其他的区别。
枚举对象中的属性【使用for ... in 语句】
语法:
for(var 变量 in 对象){
语句...
}
for...in语句:对象中有几个属性,循环体就会执行几次,每次执行时,会将对象中的一个属性的名字赋值给变量。
P58 58.尚硅谷_JS基础_全局作用域 21:23
作用域
作用域:作用域是指一个变量的作用的范围。
在JS中一共有两种作用域:
1.全局作用域
- 直接编写在script标签中的JS代码,都在全局作用域。
- 全局作用域在页面打开时创建,在页面关闭时销毁。
- 在全局作用域中有一个全局对象window,它代表的是一个浏览器的窗口,它由浏览器创建我们可以直接使用。
- 在全局作用域中:创建的变量都会作为window对象的属性保存;创建的函数都会作为window对象的方法保存。
- 全局作用域中的变量都是全局变量,在页面的任意的部分都可以访问的到。
2.函数作用域
声明提前
变量的声明提前
变量的声明提前:
- 使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值);
- 但是如果声明变量时不使用var关键字,则变量不会被声明提前。
函数的声明提前
函数的声明提前:
- 使用函数声明形式创建的函数 function 函数(){},它会在所有的代码执行之前就被创建,所以我们可以在函数声明前来调用函数;
- 使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用。
P59 59.尚硅谷_JS基础_函数作用域 21:41
函数作用域
函数作用域:
- 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁。
- 每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的。
- 在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量。
- 当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用;如果没有则向上一级作用域中寻找,直到找到全局作用域;如果全局作用域中依然没有找到,则会报错ReferenceError。
- 在函数中要访问全局变量可以使用window对象。
函数作用域的声明提前特性
在函数作用域也有声明提前的特性:
- 使用var关键字声明的变量,会在函数中所有的代码执行之前被声明;
- 函数声明也会在函数中所有的代码执行之前执行。
在函数中,不适用var声明的变量都会成为全局变量。
定义形参就相当于在函数作用域中声明了变量。
P60 60.尚硅谷_JS基础_debug 13:54
局部变量/全局变量【小练习】
火狐浏览器debug
谷歌浏览器debug
ie浏览器debug
P61 61.尚硅谷_JS基础_this 11:03
解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象,这个对象我们称为函数执行的上下文对象。
根据函数的调用方式的不同,this会指向不同的对象:
- 以函数的形式调用时,this永远都是window;
- 以方法的形式调用时,this就是调用方法的那个对象。
加括号是调用函数,这块是将fun对象赋值给sayName属性。
this指向的是一个对象,window对象调用的fun方法,指向window;同理obj对象调用sayHello,this指向obj。
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">/** 解析器在调用函数每次都会向函数内部传递进一个隐含的参数,* 这个隐含的参数就是this,this指向的是一个对象,* 这个对象我们称为函数执行的 上下文对象,* 根据函数的调用方式的不同,this会指向不同的对象* 1.以函数的形式调用时,this永远都是window* 2.以方法的形式调用时,this就是调用方法的那个对象*/function fun() {console.log(this.name);}var obj = {name: "孙悟空",sayName: fun};var obj2 = {name: "沙和尚",sayName: fun};console.log(obj.sayName == fun); // truevar name = "全局的name属性";obj.sayName();//以函数形式调用,this是windowfun();//以方法的形式调用,this是调用方法的对象obj.sayName();obj2.sayName();</script></head><body></body>
</html>
P62 62.尚硅谷_JS基础_this补充 05:39
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">var name = "全局"; // 创建一个name变量//创建一个fun()函数function fun() {console.log(this.name);}//创建两个对象var obj = {name: "孙悟空",sayName: fun};var obj2 = {name: "沙和尚",sayName: fun};//我们希望调用obj.sayName()时可以输出obj的名字obj.sayName();obj2.sayName();</script></head><body></body>
</html>
P63 63.尚硅谷_JS基础_使用工厂方法创建对象 10:48
使用工厂方法创建对象【大批量的创建对象】
P64 64.尚硅谷_JS基础_构造函数 24:56
使用工厂方法创建的对象,使用的构造函数都是Object,所以创建的对象都是Object这个类型,就导致我们无法区分出多种不同类型的对象。
创建一个构造函数,专门用来创建Person对象的。
构造函数就是一个普通的函数,创建方式和普通函数没有区别,不同的是,构造函数习惯上首字母大写。
构造函数和普通函数的区别就是:调用方式的不同;普通函数是直接调用,而构造函数需要使用new关键字来调用。
构造函数的执行流程:
- 立刻创建一个新的对象;
- 将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象;
- 逐行执行函数中的代码;
- 将新建的对象作为返回值返回。
使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数称为一个类。我们将通过一个构造函数创建的对象,称为是该类的实例。
- 工厂方法创建对象:因为每个函数里都是new Object(),所以返回的是Object。
- 构造函数是new 你自己定义的函数(),返回的名称也就是你自己定义的。
instanceof:检查一个对象是否是一个类的实例
使用instanceof可以检查一个对象是否是一个类的实例。
语法:
对象 instanceof 构造函数
如果是,则返回true,否则返回false。
所有的对象都是Object的后代,所以任何对象和Object做instanceof检查时 都会返回true。
this使用情况的总结
this的使用情况:
- 当以函数的形式调用时,this是window;
- 当以方法的形式调用时,谁调用方法 this就是谁;
- 当以构造函数的形式调用时,this就是新创建的那个对象。
JavaScript基础08-day10【函数的返回值、实参、立即执行函数、方法、全局作用域、函数作用域、提前声明、this、工厂方法创建对象、构造函数】相关推荐
- 函数的返回值可以不用赋值_C语言学习|函数的应用《一》
C语言为程序的结构提供了函数和模块 一.函数的定义与使用 <编程之道>中写道:"一个程序应该是灵活自由的.它的子过程就像串在一根线子上的珍珠."子过程在C语言中被称为& ...
- keil5函数 默认返回值_python学习第12天----内置函数 - 我想对你说
1.内置函数 python解释器提供的,直接可以使用的函数,如print,input等 1)作业域相关 ①globals() 以字典的类型返回全部局部变量 ②locals() 以字典的类型返回当前 ...
- scanf函数的返回值问题
1.scanf()函数有返回值且为int型. 2.scanf()函数返回的值为:正确按指定格式输入变量的个数:也即能正确接收到值的变量个数. scanf("%d%d", & ...
- 函数的返回值——数组返回
在C语言中,首先来对函数的返回值来温习一下: 函数调用使主调函数得到一个确定的值,这就是函数的返回值.函数的返回值是通过return 语句获得的. 那我们来提一个这样的问题,如果是一个数组通过排序后, ...
- Linux拓展之Shell中函数的返回值
概述 在 Shell 脚本中的函数中有两种方式进行返回值: return 语句:仅能返回 [0, 255] 之间的整数,常用于表示返回函数的执行结果状态. echo 语句:能返回任何数字.任何字符串, ...
- C语言之函数的返回值
小明碰到一道数学选择题问小刚,小刚算了一会给小明说计算结果是100,应选A.那么小刚给小明的反馈就可以说是小刚的一个返回值. 那么函数的返回值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主 ...
- async js 返回值_获取JavaScript异步函数的返回值
今天研究一个小问题: 怎么拿到JavaScript异步函数的返回值? 1.错误尝试 当年未入行时,我的最初尝试: function getSomething() { var r = 0; setTim ...
- python基础 python函数 函数概念 函数的多种参数 多种调用参数 装包 解包 函数代码块 函数的返回值
python基础 python函数 函数概念 函数的多种参数 多种调用参数 装包 解包 函数代码块 函数的返回值 一 .函数概念 函数是根据需要,将代码打包为代码块, 每一个代码块就可以封装为一个函数 ...
- Python基础第六天——函数的使用、函数的参数、函数的返回值、函数的嵌套、命名空间、作用域、函数对象...
一.拾遗 1.通常情况下无参函数只是进行操作,所以不需要返回值:有参数函数则需要返回值. 2.练习: 判断用户输入一串字符,如果这串字符的长度小于5则重新输入,如果大于5则退出循环. while Tr ...
最新文章
- 每个 JavaScript 开发者都该懂的 Unicode
- ASP.NET防止按F5键造成表单重复提交
- C#3.0学习笔记(8)浅谈接口interface
- 贪心算法之阿里巴巴与四十大盗(背包问题)
- (24)FPGA减法器设计(第5天)
- 七个你一定会犯的云安全错误
- bootstrap pagewrapper_BootStrap table服务端分页
- android非空验证,Android 非空格式验证框架
- jmeter监听器你真的会用了吗?每天早下班1小时的技巧来了~
- 济南python工资一般多少-2020年济南学python好点的学校
- PHPExcel如何把该列的值设置为文本无科学计数?
- GitHub开源推荐 | 一套绝佳的图标字体库
- 入门Sysmac Studio,白菜妹子是这样做的。
- 私密智能搜题小助手,支持智能图片识别和智能复制,支持多接口
- 常用值得收藏的网站/软件 持续更新中
- Iometer存储测试工具参数说明-4test setup
- 银联支付服务之公众号支付业务(二)
- android组合按键截屏,如果你的安卓手机支持〔电源〕键+〔音量减〕键截屏,你可以代码...
- 二维码与条形码的生成和识别使用
- 在线制图工具团队版介绍
热门文章
- 【转载】spring framework体系结构详解
- 计算机水平考试模拟卷,计算机等级考试模拟题
- linux 哪个进程在使用串口_Linux内核的整体架构
- 计算机专业报专转本可以志愿,2019年专转本志愿怎么填?专家透露报考窍门
- c语言推箱子给上颜色,本人的C语言大作业——推箱子
- sql server php 案例,php连接sql server 2008案例
- 分布式内存数据库---Redis数据库之(键)key
- 深度学习和目标检测系列教程 1-300:什么是对象检测和常见的8 种基础目标检测算法
- 机器学习付费专栏的一些简介
- 三十四、Scrapy中的CrawlSpider