js语法基础(持续更新中)

291 阅读4分钟

立即执行函数

1.什么是立即执行函数

所谓的立即执行函数,是指在声明完一个函数的时候就立马调用这个匿名函数,这就叫做立即执行函数;也可以说立即执行函数是一种语法,让你的函数在定义以后立刻执行。立即执行函数会创建自己的作用域,在尾部括号中给他绑定变量或方法之后,可以避免其他同名变量污染该函数作用域内部。

2.立即执行函数的写法

JS引擎规定,function如果出现在行首,将一律解析成函数。因此,JS引擎看到行首是function关键字以后,认为这一段都是函数定义,这将使得函数必须要被调用才能够执行,很显然,这不是我们想要的结果,所以,我们可以在function前面加上一些符号,来避免JS引擎误解为函数的声明定义,写法可以是下面两种形式:

//写法一,尾部括号给该立即执行函数绑定window对象
(function(){
//code...
}(window))

//写法二
(function (){
//code...
})()

立即执行函数,还有一些其他的写法(function前面加一些小东西,不让解析成函数就行),我们可以在匿名函数或函数声明的前边加上一些运算符,使它变成一个函数表达式,比如下边:

//前面加各种不报错的符号
!function () {
    //code
}()
+function () {
    //code
}() 
-function () {
    //code
}() 
void function () {
    //code
}() 
new function () {
    //code
}() 
...

3.立即执行函数的作用

通过定义一个匿名函数,创建了一个新的函数作用域,相当于创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏污染全局的命名空间。此时若是想访问全局对象,将全局对象以参数形式传进去即可,如下所示,我们将window对象传给这个函数作用域,匿名函数里面访问的全局对象就是window对象了,如此实现作用域的隔离,保障变量之间的冲突问题。

(function(){
    //code
})(window)

总结一下立即执行函数的作用:

1.不必为函数命名,避免了污染全局变量

2.立即执行函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量

3.封装变量

js函数名重复

当js两个函数的函数名重复时,位于后面的将覆盖位于前面的函数的内容

(function f(){
   function f(){return 1;}
   return f();
   function f(){return 2;}
})(); 

结果:返回 2

js数据类型

javascript语言类型的讲解: blog.csdn.net/zhenghaohan…

8种数据类型

Number
Boolean
String
Null
undefined
Object
symbol  //ES6中的新增类型,此类型可以保证属性名重名的冲突,即名称的唯一性
bigInt  //谷歌67版本中出现的一种类型,安全存储的一种大整数类型

原始类型

原始类型(栈数据,不可改变,不能添加属性或方法):
Number(数字型)、Boolean(布尔型)、String(字符型)、undefined(此类型只有一个值:undefined[未被赋值的])、null(空值,可用于占位)

引用类型

引用类型(堆数据,即Object):Array(数组类型)、Function(对象类型)、Data等

分割字符串

split()用于字符串分割,如果把空字符串 ("") 用作分隔符,那么被分割字符串中的每个字符之间都会被分割。

例:let a = ["a1","a2","b1","b2"];
let b = a.split("");
则b=["a","1","a","2","b","1","b","2"];

生成随机数

random()方法生成随机数,及其附带的数字处理函数

Math.random();生成[0,1)范围的随机数
Math.round(n); 返回n四舍五入后整数的值
Math.ceil(n); 返回小于等于n的最小整数,即向下取整
Math.floor(n);返回大于n的最小整数,即向上取整
Math.ceil(Math.random() * 10); // 主要获取1到10的随机整数,取0的几率极小
Math.floor(Math.random() * 10); // 可均衡获取0到9的随机整数
Math.round(Math.random() * 10); // 可基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半。
从已知字符来源,生成随机数:

结束语

好记性不如烂笔头,记笔记确实是个好习惯

参考文章:深入理解js立即执行函数
参考文章:泡杯感冒灵