JavaScript基础学习

一. 变量

变量声明:

一般使用:var(可表示任意类型的变量)

只在{}内生效时:let与const

二.  数组

1. Javascript的数组可以包括任意类型的数据类型。

2.通过arr.length = ?;(arr是一个数组 ?是一个值),会使数组的大小发生变化——可以增加数组长度,其中新增的未定义的变量使用“undefined”表示。同样使用索引赋值时,如果索引超过了范围,Array的大小会增大到满足条件的大小。

常用方法:(下面的方法均以例子给出,如有不解请自行详细百度)

                  indexOf(a):返回元素a在数组中的位置;

                  slice(0,3):截取下标0~3的数组;              slice(3):截取下标3到末尾的数组

                  push('A','B'):向数组末尾添加A和B;                pop():将数组的最后一个元素删除,并返回该元素

                  sort():对数组进行排序;                      reverse():将数组反转

                  splice(2,3,'A','b'):从下标2处开始删除3哥元素,再添加两个元素A,b;

                  concat('A',[1,2,3]):返回一个新数组,在当前数组的基础上连接'A',1,2,3;

                  join(‘-’):将当前数组的每个元素用“-”连接起来;

                  map(fun):对数组中的每个函数调用函数fun,并返回更改后的数组;

三. 对象(C语言的结构体)

var person = {
    name:'Bob',
    age:20,
    tag:['js','web'],
    city:'Beijing',
    hasCar:true,
}

 

赋值用“:”

可以通过对象变量["属性名"]的方式访问对象;

person["name"];//'Bob'

操作特点:在操作时可以动态添加属性

person.Sex;//undefined
person.Sex = 18;//新增一个Sex属性
delete person.sex;//删除Sex属性

常用方法:'Sex' in person; 在person中检测是否拥有Sex属性,返回true或false

                  hasOwnProperty('Sex');检测Sex属性是否是自身拥有,而不是继承得到的。

 

三. 运算符

1. 比较运算符:

false == 0;//true
false === 0;//false

"=="比较运算符,会自动转换数据类型,会得到诡异的结果。

"==="比较运算符,不会自动转换数据类型,如果数据类型不一致,返回false;如果一致,再进行比较

因此,在使用比较运算符时,尽量使用"==="。

(2)NaN

判断NaN的方法:通过isNaN()函数,如果使用NaN===NaN,会返回false;

isNaN(NaN);//true
NaN === Nan;//false

(3)浮点数的相等比较

1/3 === (1 - 2/3);//false
Math.abs(1/3 - (1 - 2/3)) < 0.0000001;//true

两个浮点数不能直接比较,要计算两者的差值,判断是否小于某个阈值;

四. 判断与循环

基本语法与C语言,Java差不多。但需要强调一下“for ... in”循环

var o = {
    name :'Jack',
    age: 20,
    city:'Beijing'
}

for(var key in o){
    console.log(key);//'name','age','city'
    console.log(o[key]);//'Jack',20,'Beijing'
}

五. Map与Set

var m = new Map([['小米',55],['Jack',88]]);

m.set('张三',67);
m.set('李四',90);
m.has('张三');//是否存在key'张三':true
m.get('张三');//67
m.delete('张三');//删除key'张三'
m.get('张三');//undefined
var s = new Set([1,2,3,3,'3']);//重复过滤s = {1,2,3,'3'}
s.add(4);//s = {1,2,3,'3',4}
s.delete(3);//s = {1,2,'3',4}
s.delete(5);//没有相应的key也不会报错

数组,Map和Set均属于iterable类型,iterable类型的集合使用for ... of 循环来遍历。

var m = new Map([['小明',65],['张三',86],['李四',55]]);

for(var x of m){
    console.log(x);//依次输出['小明',65],['张三',86],['李四',55]
}

六. 函数

1. 定义函数 (1)function 函数名(参数)

                    (2) 函数名 = function (参数)

function abs(x){
    if(x >= 0){
        return x;
    }else{
        return -x;
    }
}
var abs = function(x){
    if(x >= 0){
        return x;
    }else{
        return -x;
    }
};
//这种定义方式,按照语法规则,需要在函数体后加“;”

特点:Javascript允许传入任意个参数而不影响调用,因此传入的参数比定义的参数多也没问题,尽管函数内部不需要这些函数参数。传入的参数少也没问题,此时需要的参数将以undefined传入。

console.log(abs());//此时参数传入的是undefined,输出NaN

次数如果要需要函数内判断,需要将函数改为:

function abs(x){
    if(typeof x != 'number'){
        throw 'Not a number';//抛出异常,终止运行   
    }

    if(x >= 0){
        return x;
    }else{
        return -x;
    }
}

2.引用函数

如果需要在另一个文件中使用本文件中定义的函数,需要如下步骤:

1)在本文件中暴露要导出的函数

//暴露format方法
module.exports = {
    abs:abs
}

2)在要导入的文件内,导入和使用

//导入函数所在文件
//导入方法1
var home = require('../../home/home.js');
//导入方法2
import home from '../../home/home.js';


//使用
home.abs(..)

3.新增参数

(1)arguments参数

该参数只在函数内部起作用,它类似一个数组,包含传入的所有参数。

利用该参数常判断传入参数的个数,从而实现“设置可选参数”的目的。

(2)rest参数

当传入的参数多于所需参数时,多余的参数将以数组的形式交给rest。

4. 常见问题

Javascript有一个“在行末自动添加分号”的机制。由于该种机制,类似于下面的语句就会出现错误

for(i = 0; i < 10; i++)
    console.log(name);
return 0;

 在for循环一行的末尾自动添加了“;”,使得“console.log(name);”被忽略,偏离了原来的目的。

所以在Javascript编程中,时刻记得加“{}”和“;”

5.方法

在一个对象中绑定函数(实际就是将对象中的某个属性对应一个函数,或者直接在其后面写一个函数),这个函数称之为这个对象的方法。类似与Java中一个类里面的方法,与其类似的还有一个“this”变量,指向当前的对象。

console.log(zhangsan.age());//18

var zhangsan{
    age:function (){
        return 18;
    }
}

this的使用时需要注意,函数的定义位置与使用对象。

定义位置不同,使用对象不同时,函数中的this指向是不同的。使用方法的结果也大相径庭,还会出现无指向的错误。

特别地,可以使用apply()函数来控制this的指向,当需要使用时,详情自行百度。

6. 箭头函数

x => x*x
//相当于
function (x){
    return x * x;
}

A = 参数 => {参数使用},A是返回值

七. Javascript标准对象

typeof 123;//'number'
typeof NaN;//'number'
typeof 'str';//'string'
typeof true;//'boolean'
typeof undefined;//'undefined'
typeof Math.abs;//'function'
typeof null;//'object'
typeof [];//'object'
typeof {};//'object'

Javascript常用对象(此处仅简单介绍用处,详情自行百度)

(1)Date  日期

(2)RegExp 用于字符串匹配,在开发中用来检验字符串合法性

(3)JSON  用于网络传输中,进行数据交换

(4)Math 数学函数集合

 

你可能感兴趣的:(微信小程序开发)