JS-高程3(更新中...)

简介: 附录A 名词解析:const:声明常量,常量的值不能通过重新赋值来改变,并且在初始赋值后,不能重新声明、重新赋值了。 即:同一作用域中,常量名不能与其他变量或函数名重名。值也不能修改了。“常量是块级作用域,很像使用let语句定义的变量。

附录A

 

名词解析:

const:声明常量,常量的值不能通过重新赋值来改变,并且在初始赋值后,不能重新声明、重新赋值了。 即:同一作用域中,常量名不能与其他变量或函数名重名。值也不能修改了。

“常量是块级作用域,很像使用let语句定义的变量。”

  1. 只读的常量,就是只能读一读,不可以通过赋值改变其值,也不可以在脚本运行时重新声明,他必须被初始化某个值。
  2. 作用域规则和let块级作用域变量相同,若省略const,则被视为变量。
  3. 在同一作用域中,不能使用与变量名或者函数名相同的名字来命名常量:很好理解,常量设定后就不能变了,你若与变量名字相同,常量和变量功能不同,你让人家js把你设定的常量当常量还是变量?变量是可以改变的,你名字相同相当于改了第一个设了此名字的变量,但是常量不能改,所以就不能和别人一样。
  4. 如果常量是对象,那么对象的属性是不被保护的,就像变量对象一样,其属性是可以通过再次赋值进而被修改的。

 

let: 语句声明一个块级作用域的本地变量。

let和var 的区别:

var的变量只有函数作用域,let的变量还有语句块作用域的作用。

 

看师傅的图,一目了然:

 

1、块级作用域:任何一对花括号{}中的语句集属于一个块,在这之中定义的所有变量在代码块外都是不可见的。

(原理上是这样的,但是js不支持块级作用域,也就是在for循环中定义的i也能在函数调用的时候取到的一个现象解释、而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。)

2、函数作用域:定义在函数中的参数和变量在函数外部是不可见的、js拥有函数作用域,所以在一个函数中定义的变量,当这个函数调用完后,变量会被立即销毁。

3、语句块:if、for等语句

4、包含函数:就是包含这个变量或者语句的函数

5、剩余参数:[rest arguments]语法形式是三个点后边跟一个标识符“...nums”,是一个数组,可以用数组的方法来操作。

  剩余函数与arguments的区别:

  arguments:是一个参数的集合,即使没有参数他也是一个集合,他只有length属性和索引值的方法,不能使用数组的方法

  rest arguments:(剩余参数)是一个数组,不管有几个参数。他除了length和索引的属性外,还能用数组的方法操作参数

6、分布参数:[spread arguments] 语法形式是在值得前面加三个点,在调用的时候使用:sum(...[1,2,3])-将数组作为分布参数传给了sum()函数。

  剩余参数与分布参数的区别:

  剩余参数在定义函数的时候使用,分布参数在调用函数的时候使用。

7、数组领悟:用一组符合某个条件的值来初始化数组;语法形式:array = [ value for each ( variable in values ) condition ];

  参数说明:

  value: 实际原来数组values中的值;

  for each:结构会循环values中的每一个值;

  variable:循环出来的每一个值将放在variable中;

  condition:可选条件,如果循环出来的值(放在variable中的)符合这个条件,就会被放在最终的数组array中。

这种写法就好像把if判断语句写成了三元表达式一样。同for循环的功能没有区别,但是写法上更加简洁。

 1 //原始数组
 2 
 3 var numbers = [0,1,2,3,4,5,6,7,8,9,10];
 4 
 5 //把所有元素复制到新数组
 6 
 7 var duplicate = [i for each (i in numbers)];
 8 
 9 //只把偶数复制到新数组
10 
11 var evens = [i for each (i in numbers) if (i % 2 == 0)];
12 
13 //把每个数乘以2 后的结果放到新数组中
14 
15 var doubled = [i*2 for each (i in numbers)];
16 
17 //把每个奇数乘以3 后的结果放到新数组中
18 
19 var tripledOdds = [i*3 for each (i in numbers) if (i % 2 > 0)];
数组领悟示例代码

 

 

 

 

 

javascript高级程序设计第三版  
目录
相关文章
|
JavaScript 前端开发 CDN
skycons.js 基于canvas的天气动态js插件
skycons.js 基于canvas的天气动态js插件
190 0
skycons.js 基于canvas的天气动态js插件
|
9月前
|
JavaScript
JS数据根据键值匹配Echarts颜色的解决方案
JS数据根据键值匹配Echarts颜色的解决方案
48 0
|
JavaScript 前端开发
vanilla-tilt.js平滑3D倾斜库的使用
vanilla-tilt.js是Javascript中一个平滑的3D倾斜库,可以让网页的一些控件变得动态起来,本篇文章主要讲述了如何下载及在网页代码中配置vanilla库
199 1
vanilla-tilt.js平滑3D倾斜库的使用
|
前端开发 JavaScript
前端——JS之随机更改背景颜色
前端——JS之随机更改背景颜色
128 0
|
JavaScript 前端开发 开发者
js 功能-吸附效果 |学习笔记
快速学习 js功能-吸附效果
282 0
js 功能-吸附效果 |学习笔记
|
JavaScript
require.js加载highcharts.js/exporting.js实现图表的绘制和图片文件功能的导出
require.js加载highcharts.js/exporting.js实现图表的绘制和图片文件功能的导出
96 0
|
JavaScript 前端开发 Go
JS完美收官之——js加载时间线
什么是js加载时间线? 浏览器在开始运行一个页面的时候,首先它会初始化js功能,当js发挥它的功能时候,记录了一系列浏览器按照顺序做的事情,也就是一个执行顺序,谁在谁之前发生,谁在谁之后发生。
172 0
|
JavaScript
js之距离过去到现在时间表示
有时我们需要打印6分钟前的日期,但不希望很大的库来完成。这里有一个小片段可以做到这一点:
4974 0
|
Web App开发 算法 JavaScript
GeoJSON JS判断某一点是否在某一区域范围之内
GeoJSON JS判断某一点是否在某一区域范围之内 算法: function isInPolygon(checkPoint, polygonPoints) { var counter = 0; var i; var xinters; var p1, p2; var pointCount = polygonPoints.
2236 0
|
定位技术