一 严格模式(use strict)
(1)整个文件最开头加use strict
(2)函数内部最开头
(3)在es6中默认就处于严格模式
为什么要设置严格模式?
(1)消除js语法中,一些不合理,不严谨的地方,减少一些怪异的行为
(2)消除js代码的一些不安全之处,保证js代码运行安全
(3)严格模式可以比非严格模式下运行得更快。
严格模式语法注意有很多:
(1)不允许遗漏声明,不带var
(2)不允许八进制:会报语法错误
(3)不允许把函数写在if中
(4)形参名不允许重复(声明同名的形参)
(5)不允许给对象声明相同的属性
(6)arguments和形参没有以一对应关系
(6)function中的this不再指向window
二.复习一些老知识
undefined出现:
访问对象中不存在的属性
访问数组中没有的元素
函数没有返回值
声明了没赋值
let的注意事项:
使用let不能提升
不能重新赋值,会报错
不能作为Windows对象的属性
let{}会形成一个块级的作用域
加var与不加var的区别:
1,在全局作用域下加var可以提升,不加var不能提升
2,在全局作用域下,加var与不加var都能作为window对象的属性
3,在局部的作用域下,不加var才能作为window对象的属性
4,不加var的只能作为全局变量,不能作为局部变量
5,加var的变量是不可以被删除的,不加var的变量是可以被删除的
三.递归函数
程序调用自己的编程技巧叫做递归。
把大型的问题层层简化,得到规模小的问题,然后在解决小的问题,再层层解决大的问题
递归函数:在一个函数内部,他自己又调用了自己,需要一个出口
function f(){
f();//记得需要出口
}
记得解决这几个小例子
利用递归思想,求100的累加利用递归思想,求斐波那契数列中的第20项利用递归思想,求数组中元素的和利用递归思想,求1,3,5,7,9,... 的第N项的值。索引从0开始。利用递归思想,求1,3,5,7,9,... 前N项的和利用递归思想,求0,2,4,6,8,... 的第N项的值利用递归思想,求0,2,4,6,8,... 前N项的和