JavaScript(三)——函数、变量作用域、方法
文章目录
- 1. 函数
- 2. 变量的作用域
- 3. 方法
- 4. 内部对象
- 4.1 Date
- 4.2 JSON
- 4.3 Ajax
1. 函数
在JavaScript中,函数即对象,可以随意地被程序操控,函数可以嵌套在其他函数中定义,这样可以访问它们被定义时所处的作用域中的任何变量。
(1)定义方式一(以绝对值函数abs()为例)
(2)定义方式二
function(x){…}这是一个匿名函数,但是可以把结果赋值给abs,通过abs就可以调用函数,方式一与方式二等价
(3)调用函数
在调用函数时,可以向其传递值,这些值被称为参数。javaScript 可以传任意个参数,也可以不传递参数。
判断传递进来的参数是否存在问题,若存在问题,则手动抛出异常。
(4)arguments
arguments是一个JS免费赠送的关键字;代表传递进来的所有的参数,是一个数组!
问题: arguments 包含所有的参数,我们有时候想使用多余的参数来进行附加操作。需要排除已有参数~
(5)rest
ES6 引入的新特性,获取除了已经定义的参数之外的所有参数。
rest 参数只能写在最后面,且必须用… 标识
2. 变量的作用域
- 在javascript中, var 定义变量实际是有作用域的,作用域可访问变量,对象,函数的集合。
- 在函数之外声明的变量,叫做全局变量,因为它可被当前文档中的任何其他代码所访问。在函数内部声明的变量,叫做局部变量,因为它只能在当前函数的内部访问。
(1)在函数体中声明,则在函数体外不可以使用 (非要想实现的话,后面可以研究一下闭包 )
(2)如果有两个函数使用了相同的变量名,只要在函数内部就不冲突
(3)内部函数可以访问外部函数的成员,反之则不行
(4)内部函数变量和外部函数的变量重名,由“内”向“外”查找
说明:在JavaScript 中 函数查找变量从自身函数开始,由 ‘’内‘’ 向 ‘’外‘’ 查找 。假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数的变量。
(5)提升变量的作用域
先使用变量稍后再声明变量而不会引发异常,称为提升变量
说明:JavaScript 变量感觉上是被“提升”或移到了函数或语句的最前面。但是,提升后的变量将返回 undefined 值,即不会提升变量y的赋值。规范操作
所有的变量定义都放在函数的头部,不要乱放,便于代码维护。
(6)全局函数
全局变量
(7) 全局对象 window
alert() 这个函数本身也是一个 window 变量
Javascript 实际上只有一个全局作用域, 任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用域都没有找到,报错 RefrenceError规范
由于我们所有的全局变量都会绑定到我们的 window 上。如果不同的js 文件,使用了相同的全局变量,就会发生冲突。
解决办法:把自己的代码全部放入自己定义的唯一空间名字中, 降低全局命名冲突的问题。jQuery
(8)局部作用域:let
可以看到由 var 定义局部变量后,控制台从输出了11这个数,说明执行了console.log(i+1)语句, i 出了这个作用域还可以使用。这是不规范的!
ES6 引入let 关键字,解决局部作用域冲突问题
建议大家都是用 let 去定义局部作用域的变量
(9)常量 const
在ES6 之前,怎么定义常量:只有用全部大写字母命名的变量就是常量;建议不要修改这样的值
在 ES6 引入了常量关键字 const
3. 方法
(1)定义方法
方法就是把函数放在对象的里面,对象只有两个东西 : 属性和方法
this 是无法指向的,是默认指向调用它的那个对象
(2)apply 在js 中可以控制 this 指向
4. 内部对象
标准对象
4.1 Date
日期对象用于处理日期和时间
控制台输出
转换
控制台输出
4.2 JSON
早期,所有数据传输习惯使用 XML 文件
- JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
- 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
- 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
- 在JavaScript 一切皆为对象、任何js 支持的类型都可以用JSON来表示;number,string…
格式:
- 对象都用 {}
- 数组都用 []
- 所有的键值对 都是用 key:value
JSON字符串 和 JS对象的转化
- JSON.stringify( ); JS对象转化为JSON字符串
- JSON.parse( ); JSON字符串转化为JS对象
JSON 和 JS 对象的区别
var obj = {a: ‘hello’,b:‘hellob’}; JS对象
var json = {“a”: “hello”,“b”:“hellob”}; JSON字符串,键必须加“ ”
4.3 Ajax
- AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
- AJAX 不是新的编程语言,而是一种使用现有标准的新方法。
- AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
- AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行
- 原生的js写法 xhr 异步请求
- jQuey 封装好的方法 $(”#name“).ajax(“”)
- axios 请求
JavaScript(三)——函数、变量作用域、方法相关推荐
- python函数对变量的作用域_python函数变量作用域如何理解使用?
大家对于这个名词"变量作用域"有了解过吗?如果大家没有听说过,小编可以协助大家理解下,拆分出来变量的定义,比如,函数里面去定义变量的,这种叫做局部变量,反之,不再函数里面的,那肯定 ...
- php函数,static,globalkeyword及三种变量作用域
函数 和js函数相似,关注php与其它语言不用的地方 函数的形參默认值 形式: function f($a,$b=3,$vc = "abc"){} 注意:没有给默认值的形參必须传递 ...
- JavaScript-4.2函数,变量作用域---ShinePans
<html><head><meta http-equiv="content-type" content="text/html;charset ...
- JavaScript匿名函数、作用域、预解析
匿名函数: 没有名字的函数/定义时未直接命名的函数. 优点: 非匿名函数在定义时,已经创建了函数对象和作用域对象:所以,即使没有调用也会占用内存空间:但是匿名函数仅在调用时,才临时创建函数对象和作用域 ...
- python函数变量的作用域_学不会的Python函数——变量作用域
1. LEGB函数 Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.我们先来看一段代码. 上述代码有两个变量a,当在test函数中输出变量a的值是,为什么 ...
- Javascript 中的变量作用域问题
Js中的变量作用域问题: 1.没有块级作用域.Js中的变量作用域不是以{}为界的,不像C/C++/Java. 如: 1 if(true){ 2 var name = "qqyumidi&qu ...
- python函数的作用域_python学习第五篇 函数 变量作用域
原博文 2019-07-18 23:40 − 函数 函数是组合好的,可以重复使用的,用来实现单一或相关联功能的代码片段作用 能提高应用的模块性和代码的重复利用率函数的创建 第一函数的规则 1.函数代码 ...
- Javascript三种创建对象的方法,new关键字,for...in 遍历对象
在Javascript中,对象是一组无序的相关属性和方法的集合,例如:字符串.数值.数组.函数等. 对象是有属性和方法组成 属性:事物的特征 方法:事物的行为 字面量创建对象:{ } 里面包含了表达这 ...
- 【JavaScript 笔记】— 函数高级(变量作用域、解构赋值、方法、高阶函数、闭包、箭头函数、generator)
JavaScript个人笔记 变量作用域 变量提升 全局对象 windows 命名空间 局部作用域 常量 解构赋值 使用场景 方法 apply 装饰器 高阶函数(Array) map reduce m ...
最新文章
- word中使用MathType能做什么
- 如何使用Windows开发机为iPhone开发?
- python打印mysql版本信息
- Ubuntu16.04里django的配置和安装
- 重建DC的DNS区域
- el-input输入金额,保留两位小数
- C++ operator 知识点
- [react] 请说说什么是useEffect?
- Gmail有充分理由启用SSL加密会话
- Java Web学习总结(2)——Servlet入门
- 关于Windows7下 IIS 7 对ASP.NET 的配置的一点感想
- html输入框2位小数,input输入框数字限制(2位小数,含0的正整数)
- 设计中最困难的部分是决定设计什么
- linux的rar,linux下rar的使用
- TEST ON 平安夜
- python中eval函数和str函数
- 【CART与GBDT】
- Java中string,map,json之间的常用转换方法(json转map,map转json,json转string等)
- android5.0电话录音,用Xpose完美实现电话录音,支持android 8.1.0
- Tobii Eye Tracker 4C 入门教程(一)
热门文章
- CVPR 2017 ADNet:《 Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning》论文笔记
- 洛谷 P1955 [NOI2015]程序自动分析(沙雕题)
- 洛谷P1678-烦恼的高考志愿
- 魔兽最多人的服务器,魔兽怀旧服:70级热门服务器人口一览!这4大服最值得建号投入!...
- 函数,名称空间——day11
- python项目飞机大战
- nowcoder20C 位数差
- CSS Grid layout布局
- win7 安装好redis 如何安装扩展
- STL 去重 unique