七、深入JavaScript函数,对象和作用域(三)
发布日期:2021-07-01 02:05:44
浏览次数:2
分类:技术文章
本文共 2293 字,大约阅读时间需要 7 分钟。
@Author:Runsen
@Date:2020/5/26作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件。导致翘课严重,专业排名中下。.在大学60%的时间,都在CSDN。决定今天比昨天更加努力。
文章目录
函数
函数:就是将一些功能或语句进行封装,在需要的时候,通过调用的形式,执行这些语句。函数就是工具,写成函数看起来比较高大上。
比如,下面的sayHello函数。
console.log("Runsen,你好");sayHello(); // 调用函数// 定义函数function sayHello(){ console.log("欢迎,Runsen"); console.log("welcome");}
因此,在
function 函数名([形参1,形参2...形参N]){ // 备注:语法中的中括号,表示“可选” 语句... }
比如下面的求和函数
function sum(a,b){ return a+b;}var result=sum(2,3);console.log(result);//输出5
对象
在JavaScript中, 一切皆是对象,函数也可以用一个对象来代表:Function,我们可以使用Function来创建对象:
创建自定义对象最简单的方式就是创建一个Object实例, 然后添加属性和方法
/ 1.创建person的对象var person = new Object()// 2.给person对象赋值了一些动态的属性和方法person.name = "Runsen"person.age = 20person.height = 65person.sayHello = function () { alert("Hello, My name is " + this.name)}// 3.调用方法, 查看结果person.sayHello()但是如果需要创建多个对象,应该使用工厂方法创建对象,大批量的创建对象,其实就是定义一个函数
/* * 使用工厂方法创建对象 * 通过该方法可以大批量的创建对象 */function createPerson(name, age, gender) { //创建一个新的对象 var obj = new Object(); //向对象中添加属性 obj.name = name; obj.age = age; obj.gender= gender; obj.sayHello = function() { console.log("Hello, My name is " + this.name); }; //将新的对象返回 return obj;}var obj2 = createPerson("Runsen的朋友", 20, "男");obj2.sayHello();var obj3 = createPerson("Runsen的兄弟", 20, "男");obj3.sayHello();var obj4 = createPerson("Runsen以后的女朋友", 20, "女");obj4.sayHello();但是上面创建的对象都是Object这个类型,就导致无法区分出多种不同类型的对象。因此,最好的方法就是使用this上下文对象。
作用域
作用域指一个变量的作用范围。在js中,一共有两种作用域:
-
全局作用域
-
函数作用域
全局作用域
在全局作用域中:
-
创建的变量都会作为window对象的属性保存。
-
创建的函数都会作为window对象的方法保存。
全局作用域中的变量都是全局变量,在页面的任意的部分都可以访问的到。
var carName = " Volvo"; // 此处可调用 carName 变量function myFunction() { // 函数内可调用 carName 变量}
局部作用域
变量在函数内声明,变量为局部作用域。
局部变量:只能在函数内部访问。
// 此处不能调用 carName 变量function myFunction() { var carName = "Volvo"; // 函数内可调用 carName 变量}
参考菜鸟教程
下面是我的总结;
在function内部, 加var的是局部变量, 不加var的则是全局变量;
在function外部, 不管有没有使用var声明变量,都是全局变量,在function外部,var关键字一般可以省略,但是为了书写规范和维护方便以及可读性好,一般不建议省略var关键字。例子
var a = 1; function foo() { console.log(a); a = 2; // 此处的a相当于window.a } foo(); console.log(a); //打印结果是2
如果在function内部, 加var
function foo() { var a = 1; console.log(a); //1 a = 2; console.log(a); //2 } foo(); // console.log(a); //a is not defined
转载地址:https://maoli.blog.csdn.net/article/details/106351349 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月15日 03时57分41秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
c++类的构造函数详解【转】
2019-05-02
C++中判断数据类型的函数【转】
2019-05-02
const在函数前与函数后的区别【转】
2019-05-02
C++中的mutable关键字【转】
2019-05-02
c++中冒号(:)和双冒号(::)的用法【转】
2019-05-02
python中各种下划线的含义
2019-05-02
《计算机视觉-一种现代方法(第2版)》读书笔记三:早期视觉(一幅图像)
2019-05-02
《计算机视觉-一种现代方法(第2版)》读书笔记六:应用之图像搜索和检索
2019-05-02
如何撰写高水平的学术论文
2019-05-02
谭浩强《C++面向对象程序设计》知识点总结
2019-05-02
分享一个关于介绍TextCNN和TextRNN的文章
2019-05-02
关于CNN中感受野的理解和计算方法
2019-05-02
java基础----RandomAccessFile
2019-05-02
__attribute__((packed))
2019-05-02
dom简介
2019-05-02
javascript学习
2019-05-02
如何检测浏览器是否支持html5或者其部分元素
2019-05-02
linux的sleep限制
2019-05-02
wifi学习
2019-05-02