zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    虚拟机环境
    R语言里一些画图程序不能在循环里正常保存的解决办法
    python 图片处理(更新)
    服务器跑代码小tips
    [论文笔记] :Temporal Graph Networks for Deep Learning on Dynamic Graphs
    [论文笔记] Detecting early-warning signals for sudden deterioration of complex diseases by dynamical network biomarkers
    堆和优先队列的写法
    [论文笔记] :Detection for disease tipping points by landscape dynamic network biomarkers
    Computational Physics
    WCSPH实现方法
  • 原文地址:https://www.cnblogs.com/tingshu/p/14438763.html
Copyright © 2011-2022 走看看