文章目录

  • 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(三)——函数、变量作用域、方法相关推荐

  1. python函数对变量的作用域_python函数变量作用域如何理解使用?

    大家对于这个名词"变量作用域"有了解过吗?如果大家没有听说过,小编可以协助大家理解下,拆分出来变量的定义,比如,函数里面去定义变量的,这种叫做局部变量,反之,不再函数里面的,那肯定 ...

  2. php函数,static,globalkeyword及三种变量作用域

    函数 和js函数相似,关注php与其它语言不用的地方 函数的形參默认值 形式: function f($a,$b=3,$vc = "abc"){} 注意:没有给默认值的形參必须传递 ...

  3. JavaScript-4.2函数,变量作用域---ShinePans

    <html><head><meta http-equiv="content-type" content="text/html;charset ...

  4. JavaScript匿名函数、作用域、预解析

    匿名函数: 没有名字的函数/定义时未直接命名的函数. 优点: 非匿名函数在定义时,已经创建了函数对象和作用域对象:所以,即使没有调用也会占用内存空间:但是匿名函数仅在调用时,才临时创建函数对象和作用域 ...

  5. python函数变量的作用域_学不会的Python函数——变量作用域

    1. LEGB函数 Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.我们先来看一段代码. 上述代码有两个变量a,当在test函数中输出变量a的值是,为什么 ...

  6. Javascript 中的变量作用域问题

    Js中的变量作用域问题: 1.没有块级作用域.Js中的变量作用域不是以{}为界的,不像C/C++/Java. 如: 1 if(true){ 2 var name = "qqyumidi&qu ...

  7. python函数的作用域_python学习第五篇 函数 变量作用域

    原博文 2019-07-18 23:40 − 函数 函数是组合好的,可以重复使用的,用来实现单一或相关联功能的代码片段作用 能提高应用的模块性和代码的重复利用率函数的创建 第一函数的规则 1.函数代码 ...

  8. Javascript三种创建对象的方法,new关键字,for...in 遍历对象

    在Javascript中,对象是一组无序的相关属性和方法的集合,例如:字符串.数值.数组.函数等. 对象是有属性和方法组成 属性:事物的特征 方法:事物的行为 字面量创建对象:{ } 里面包含了表达这 ...

  9. 【JavaScript 笔记】— 函数高级(变量作用域、解构赋值、方法、高阶函数、闭包、箭头函数、generator)

    JavaScript个人笔记 变量作用域 变量提升 全局对象 windows 命名空间 局部作用域 常量 解构赋值 使用场景 方法 apply 装饰器 高阶函数(Array) map reduce m ...

最新文章

  1. word中使用MathType能做什么
  2. 如何使用Windows开发机为iPhone开发?
  3. python打印mysql版本信息
  4. Ubuntu16.04里django的配置和安装
  5. 重建DC的DNS区域
  6. el-input输入金额,保留两位小数
  7. C++ operator 知识点
  8. [react] 请说说什么是useEffect?
  9. Gmail有充分理由启用SSL加密会话
  10. Java Web学习总结(2)——Servlet入门
  11. 关于Windows7下 IIS 7 对ASP.NET 的配置的一点感想
  12. html输入框2位小数,input输入框数字限制(2位小数,含0的正整数)
  13. 设计中最困难的部分是决定设计什么
  14. linux的rar,linux下rar的使用
  15. TEST ON 平安夜
  16. python中eval函数和str函数
  17. 【CART与GBDT】
  18. Java中string,map,json之间的常用转换方法(json转map,map转json,json转string等)
  19. android5.0电话录音,用Xpose完美实现电话录音,支持android 8.1.0
  20. Tobii Eye Tracker 4C 入门教程(一)

热门文章

  1. CVPR 2017 ADNet:《 Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning》论文笔记
  2. 洛谷 P1955 [NOI2015]程序自动分析(沙雕题)
  3. 洛谷P1678-烦恼的高考志愿
  4. 魔兽最多人的服务器,魔兽怀旧服:70级热门服务器人口一览!这4大服最值得建号投入!...
  5. 函数,名称空间——day11
  6. python项目飞机大战
  7. nowcoder20C 位数差
  8. CSS Grid layout布局
  9. win7 安装好redis 如何安装扩展
  10. STL 去重 unique