@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 = 20
person.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上下文对象。

<script>
function createPerson(name, age, gender) {//向对象中添加属性this.name = name;this.age = age;this.gender = gender;this.sayHello = function() {console.log("Hello, My name is " + this.name);};}var obj2 = new createPerson("Runsen的朋友", 20, "男");
obj2.sayHello();
var obj3 = new createPerson("Runsen的兄弟", 20, "男");
obj3.sayHello();
var obj4 = new createPerson("Runsen以后的女朋友", 20, "女");
obj4.sayHello();
</script>

作用域

作用域指一个变量的作用范围。在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); //1a = 2;    console.log(a); //2}foo();
//  console.log(a);   //a is not defined

七、深入JavaScript函数,对象和作用域(三)相关推荐

  1. 深入探讨JavaScript函数对象

    人人生而平等,但有些人比其他人更加平等--奥威尔 函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解. javascript中的函数不同于其他的语言,它的每个函数都是 ...

  2. STL源码剖析 第七章 仿函数(函数对象)

    函数对象:具有函数性质的对象 使得用户像使用函数一样使用它 一般函数提供两个版本,第一个版本使用operator < ;第二版本需要用户 指定某种操作 第二版本就是设计一个函数,将函数指针作为算 ...

  3. 爬虫不得不学之 JavaScript 函数对象篇

    今天好像是情人节?所以最适合面向对象,JavaScript 也有对象,我们也可以随时面向对象,方便得很,那怎样才有对象呢?下面告诉你! 1. 数组 数组,字面意思就是一堆数的组合,但是它是有顺序的,学 ...

  4. javascript面象对象编程的三种方法

    <script>     /*      * 第一种,函数即类,利用prototype来模拟对象的方法,简单 ,不包括继承      */         //-------------- ...

  5. 王亟亟的Python学习之路(10)-函数对象的作用域,函数作为返回值,闭包

    转载请注明出处:王亟亟的大牛之路 本来打算把工作的事周末做掉点,但是发现在外面浪并不能迅速集中投入,为了避免不必要的BUG 还是明天在家做吧,那么久写一篇Python的文章吧,毕竟背着Mac出门不做些 ...

  6. JavaScript 核心概念之作用域和闭包

    相信大家已经阅读了很多关于作用域和闭包文章,我也一样.作用域和闭包是 JavaScript 中的关键概念之一.当我阅读了<高性能的JavaScript>这本书后,我才完全理解这两个概念.所 ...

  7. python 函数对象(函数式编程 lambda、map、filter、reduce)、闭包(closure)

    1.函数对象 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函 ...

  8. JavaScript(三)—— JavaScript 函数/JavaScript 作用域/JavaScript 预解析/JavaScript 对象

    本篇为 JavaScript 系列笔记第三篇,将陆续更新 JavaScript(一)-- 初识JavaScript/注释/输入输出语句/变量/数据类型 JavaScript(二)-- JavaScri ...

  9. python 3.28 第三章 函数嵌套/名称空间//内置名称空间/全局名称空间/局部名称空间/作用域/函数对象/闭包函数。...

    1 函数嵌套: 函数内可以调用了其他的函数. # def max2(x,y):# if x > y:# return x# else:# return y## def max3(x,y,z):# ...

最新文章

  1. 华为5G手机芯片被唱衰:美研究机构拆解6款量产机,不谈能力对标高通骁龙X50...
  2. PHP中的SESSION
  3. 见了很久没见的高中同学,真好
  4. linux怎么装谷歌浏览器,如何在linux CentOS 上安装chrome 谷歌浏览器?
  5. Oracle 序列的创建和使用
  6. android loadlibrary 更改libPath 路径,指定路径加载.so
  7. python用类名直接调用方法_Python类的实例方法、静态方法、类方法详解,附代码示例...
  8. 2021-04-09 随机模拟—蒙特卡洛方法 Matlab代码实现
  9. 矿泉水功能突破口-丰收节交易会·李喜贵:遵义谋定水产业
  10. 20200301:快乐数(leetcode202)
  11. JAVA转smali软件_Java2Smali(Java代码转Smali工具)
  12. 幕享 for Mac(全平台全设备投屏共享软件)中文版
  13. list scala 当前位置 遍历_Scala学习七之集合了解
  14. 超全opencv常见图像处理操作总结及效果展示(附python代码)
  15. 完全卸载MySQL 数据库——清空MySql注册表
  16. Java并发编程的艺术下载
  17. Linux系统-进程概念
  18. 齐齐哈尔大学考研计算机专业,齐齐哈尔大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  19. 《Spring实战》读书笔记-第6章 渲染Web视图
  20. freesurfer运行完recon-all怎么快速查看有没有报错?——核心命令tail重定向

热门文章

  1. androidid什么时候会变_今天是“三九”为什么老话说:三九冰上走一走,过年也能露一手!...
  2. a股用计算机模拟走势,咬牙跺脚!A股牛市不改的铁证!
  3. 普通话测试第四题评分标准_普通话考试中命题说话的扣分标准
  4. python打包exe报错_python 程序打包为 windows 可执行程序 exe
  5. 记-更改配置而不需停止并重新启动服务
  6. array_merge
  7. SLinkList(静态链表)
  8. 周末加班重构代码的几点感慨
  9. C#开发XML WebService接口(SOAP)
  10. 工业机器人电路图讲解话术_6张经典电路图分析助你进阶高级电工,你都会了吗?...