JS基础下

1.函数
函数在JS中数据Object引用类型

  • 关键字形式函数
    使用关键字function声明
    语法:
    function 函数名(参数1,参数2……){
    代码块
    }

  • 表达式形式函数(即匿名函数)
    var dhs = function(){
    语句块
    }
    区别:关键字形式函数可在声明之前调用(浏览器会提升),而匿名函数则不可

  • 作用域(scope):函数内定义的变量为局部变量,仅在函数体中可访问;函数外定义的变量为全局变量,可在js行为层任意位置使用。
    注意的是在循环语句中定义的变量,也为全局变量
    js中最大的作用域在标签之间。

<script>	
	var num = 42;
	function fun(){
		console.log(num);
                if(false){
		var num = 21;
                }
	}
	fun()
</script>

上述代码输出结果为undefined,因为浏览器会把变量声明部分提升,复值部分则不会。
在JS中任何语句都阻挡不了变量声明部分的提升;
会提升到当前作用域最上方。

  • 关键字return
    return一般结合函数使用,且一般在函数体中使用
    函数体中如果遇到关键字return,函数体中后面语句则不会再执行。
    return可将计算完的结果返回。

回调函数
当一个函数执行的时候,传入的实参为另外一个函数声明部分,这个实参(函数)即为回调函数。

<script>	
	var num = 42;
	function fun(a,b){
		console.log(a);
		b();
	}
	fun(11,function(){
		console.log('执行力');
	})
</script>

IIFE
全称:immediately invoking funciton express`
在表达式形式函数后紧随小括号立即调用,即IIFE;
关键字形式函数后不可直接跟小括号,但是可以通过一些手段实现立即调用。

<script>	
	+function test(){
		console.log('hello')
	}()
	-function test(){
		console.log('xiaoming')
	}()
	!function test(){
		console.log('a')
	}()
	(function test(){
		console.log('a')
	})()
</script>

+,-,!,() 可将关键字函数转变为IIFE,立即调用。每一个IIFE都有属于自己的独立作用域。

2.数组
JS中,中括号[]代表数组,数组属于引用类型数据Object。
数组是有序的(即可以通过位置查找),可以存储很多任意类型数据。eg:[1,'aw',null,function(){}]

<script>	
	var arr = ['后',null,3];
	console.log(arr[0])
</script>

通过访问下表可以访问数组。
数组枚举元素的时候,下表越界不会报错,默认返回undefined。

<script>	
	var arr = ['后',null,3];
	console.log(arr[0]);
	arr[0]='前'; //修改元素
	console.log(arr[0]);
	arr[3]=8;  //添加元素
	console.log(arr);
</script>

数组常用属性和方法

  • 属性
    length

  • 方法
    push():向数组的尾部添加一个或多个元素
    pop():在数组的尾部移除一个元素
    unshift():向数组的头部添加一个或多个元素
    shift():在数组的头部移除一个元素
    join():可通过某一个字符将数组拼接转换为字符串
    reverse():将当前数组倒置
    indexOf():可以获取数组中某一个元素的索引值
    includes():检查某一个元素受否存在与数组中,返回ture或false
    slice():从其实数组中切割出一个新的子数组,可以有1或2个参数,分别是起始,结束索引值,左闭右开。该方法对起始数组没有影响
    splice():可对数组进行切割,插入,替换。会修改起始数组

<script>	
	var arr = ['后','rf',3];
	console.log(arr.join('-'));	
        var arr = ['吃饭','睡觉','doudou1'];
	console.log(arr.join('-'));
	console.log(arr.indexOf('睡觉'));	
	var arr = [1,2,3,4,5,6,6];
	console.log(arr.slice('3'));
	var arr = ['ag','wq','q','t','o'];
	arr.splice(2);  //从索引值为2的位置切割至末尾
	arr.splice(2,3); //从索引值为2的位置切割3个元素
	arr.splice(2,0,'ff'); //从索引值为2的位置插入元素,关键点为0
	arr.splice(2,2,'ff'); //将索引值为2,3的元素替换掉
</script>

3.堆栈空间
我们书写的代码,存储在计算机内存当中,计算机内存中分:五大区域。
常用区域:堆空间,栈
基本数据类型存储于栈,引用数据类型存储与堆空间。

var a=100,b=100 //此时a存的是值100
console.log(a==b)  //返回true
var a=[],b=[] //a存的是内存地址
console.log(a==b)  //返回false

4.字符串属性和方法
属性:
length:获取字符串长度
方法:
toUppercase():将字符串中英文小写转为大写
toLowercase():将字符串中英文大写转为小写
search():正则,返回第一个匹配的下标(可结合正则),加修饰符g无用
split():正则,可将字符串通过某一个字符切割为一个数组,(最常用的是用空字符串进行切割)
substring():从父串中切割出一个子串,str.substring(起始索引值,结束索引值)。(参数至少一个,至多两)
substr():从父串中切割出一个子串,str.sub(起始索引值,所且字符串个数)
上述方法都会返回一个新字符串,对起始字符串无影响
replace():正则可以将某一个字符串中符合条件的字符进行替换
match():正则,可以进行将某一个字符串中符合条件的第一个字符匹配出来,返回的是一个数组。

5.JSON数据格式
【JavaScript Object Nation】

  • JSON数据格式通过KV对来存储数据
  • JSON数据格式K务必要加双引号
  • data.k,data[k]读;,data.k=22,data[k]=3 为修改或新增

6.正则
正则表达式方法:
exec:在目标字符串中执行一次正则匹配操作,即是有修饰符g,也只匹配一次
test:用于检测正则表达式是否在当前字符中出现,返回布尔值true或者false

<script>	
	var str = '我很喜欢 中国 空气';
	var re = /中国/g;
	console.log(re.test(str))
</script>

7.三元运算符
语法 A?B:C
三元运算符A:需要是布尔值,或可隐式转为布尔
A为真则返回结果B,否则返回C
三元运算符B和C:可以为任意类型数值或表达式
应用场景:经常用于给变量赋值,eg: true ?16:NAN

8.进阶
类数组对象:arguments(不是数组,只能使用数组的length属性)
函数体中拥有一个引用类型数据arguments,在函数没有形参的情况下,可以获取外部传入的实参。

<script>	
	function fun(){
		console.log(arguments)
	}
	fun(1,2,3,5)
</script>
posted @ 2021-02-23 22:56  tingshu  阅读(63)  评论(0编辑  收藏  举报