JavaScript(3)

创建绝对值函数

方法一:


方法二:


函数相当于是匿名的,可以把结果赋值给abs,通过abs就可以调用函数。

js的函数参数问题:可以传任意个参数,也可以不传参数进来的参数

如果存在问题,怎么去解决?假设参数不存在,如何去规避?


arguments,能获取传递进来的所有的参数,是一个数组

rest:es6新特性,获取除了已定义的参数外所有的参数

rest必须写在最后面前面要加...


变量的作用域

1.函数体内声明的变量,不能在函数体外使用。(可以用闭包实现)

2.如果两个函数使用了相同的变量名,只要在函数的内部,不会冲突。

3.内部函数可以访问外部函数,外部函数不可以访问内部函数。

4.内部函数和外部函数重名了:不会互相影响的。但是最好不要这样写。

5.JS中函数变量查找是从自身开始的,由内”向“外”查找,假设外部存在同名的函数变量,则内部函数会自动屏蔽外部函数。

6.声明一个变量没有使用var语句,该变量就会被默认为全局变量。

提升作用域:


本质:


相当于y也已经定义了

js执行引擎,自动提升了y的声明,但是不会提升y的赋值。这个JS成立之初就有的特性。

规范:所有的变量定义都放在函数的头部,便于代码维护。

全局变量:

全局变量window

万物皆对象


默认所有全局变量,都会自动绑定在window对象上

alert()这个函数本身也是一个window对象


JS只有一个全局作用域,任何变量(函数其实也可以视为变量),假设没有在函数范围内找到,就会向外查找,如果在全局作用域都没有找到,就会报错RefrenceError。

规范化:

所有的全局变量都会绑定在window上,不同的js文件,使用了相同的全局变量,就会产生冲突,如何避免?


把代码放进定义的唯一的空间名字中,降低全局命名的冲突问题

jQuery库把所定义的都放到jQuery中,用简化符$(selctor).action()

let局部作用域(ES6关键字),解决局部作用域的冲突问题:


建议使用let去定义局部作用域的变量

const常量:

ES6之前定义常量,只有用全部大写字母定义的就叫常量,建议不要修改这样的值。


ES6中引入了const关键字

方法:

方法就是把函数放在对象里面,对象只有两个东西:一个方法,一个是属性。

this关键字到底是什么???

this 的多种指向:

1、在对象方法中, this 指向调用它所在方法的对象。

2、单独使用 this,它指向全局(Global)对象。

3、函数使用中,this 指向函数的所属者。

4、严格模式下函数是没有绑定到 this 上,这时候 this 是 undefined。

你可能感兴趣的:(JavaScript(3))