04-ECMAScript - 基础语法

本文深入探讨了JavaScript中的常量、变量、数据类型、类型转换、运算符、语句结构、数组、函数、对象、JSON以及作用域等核心概念。讲解了变量的声明与赋值、基本数据类型与引用数据类型的差异、字符串与数字的转换规则、数组的常用操作以及函数的定义与调用。此外,还介绍了对象的创建与使用、JSON的转换方法以及作用域的原理。

常量

一经赋值不可改变

分类

  1. 字面常量

    • 整型常量 - 整数

    • 实型常量 - 小数

    • 字符串常量 - 单引号或双引号引用

    • 布尔常量 - true和false

  2. 自定义常量

    const 常量名 = 值


变量

值可被修改

定义

Es5

特点(Es6不存在)

  • 代码中可多次定义同名变量

  • 可先使用再定义(显示空值,值不会提前给予)

var 变量名 = 值;

Es6

let 变量名 = 值;

数据类型

类型查看:typeof 目标

基本数据类型

类型解释
number整数或小数
string字符串
booleantrue(1)和false(0)
undefined

引用数据类型

类型解释
Object对象类型
function方法
array数组类型
null

类型转换

转String

任意类型都可转为String类型

目标+""

String转数字

规则

从第一位开始扫描,到第一个非数值地方结束

第一个字符是非数值返回 - NaN(Not a Number)

转整数

parseInt("目标")

转小数

parseFloat("目标")

Number(目标)

严格进行数字转换

  • null - 0

  • 空字符串 - 0

  • true - 1,false - 0

  • 合法转对应数字,非法返回NaN

运算符

值等(==):值相等

全等(===):值和类型相等

  1. 赋值运算符(从右到左):=

  2. 算术运算符:+ - * / %

  3. 复合赋值运算符:+= -= *= /= %=

  4. 比较运算符:> < >= <= == === != !==

  5. 逻辑运算符:&& || !

语句结构

分支结构

单分支:if(条件){}

双分支:if(条件){}else{}

多分支:

  1. if (){}else if(){}else{}

  2. switch(值){case 值:}(通过全等判断值)


循环结构

  1. for

  2. while

  3. do while

关键字

  • break:结束当前循环

  • continue:结束本次循环,开启下次循环

  • retrun:1、结束方法 2、返回值

数组

用于存储多个数据

特点

  1. 可越界(自动扩容)

  2. 可存不同的数据类型

  3. 下标可是非数值(for循环不能遍历非数值下标,可用for in)

定义

方式一:var 数组名 = [元素1,元素2...];

方式二:var 数组名 = new Array(元素1,元素2....);

方式三:var 数组名 = new Array(length);

访问

通过下标访问(0~+∞)

数组名[index]

遍历

for循环

for(var i = 0;i<arr.length;i++){
    console.log(arr[i]);
}

for in

for(var i in arr){
    console.log(arr[i]);
}

forEach()

arr.forEach(function(element,index){
    console.log(element);
    console.log(index);
});

常用API

方法名作用
splice(起点,数量)数组切片
slice(起点,终点)数组切片 [起点,终点)
push(目标)在数组尾部添加元素
unshift(目标)在数组头部添加元素
pop()删除最后一个元素
shift()删除第一个元素
reverse()数组倒置
join()连接数组所有元素 , 隔开
sort()排序
filter(function对象)根据规则进行过滤
indexOf(元素)元素首次出现位置(无 -1)

自定义sort()

function 自定义(a,b){
    return a-b;
}
console.log(arr.sort(自定义));

filter使用方法

function 自定义(元素){
    //true:留 false:走
    return 元素要求?false:true;
}
var newarr = arr.filter(自定义);
console.log(newarr);

作用域

局部变量:定义在方法中

全局变量:其他地方定义

方法

功能的集合

使用

方式一

声明式:用function声明

function 方法名(形参列表){

​ //方法内容

}

方式二

变量式:将方法赋予变量,变量名就是方法名

var 方法名 = function(形参列表){

​ //方法的实现

}

方法三

var 变量名 = new Function(形参列表,方法体);

// 方法本质是一个对象
var add = new Function("a","b","return a+b");

:数组去重

// 数组传参顺序(element,index,arr)
var newArr = arr1.filter(function(element,index,arr){
    return arr1.indexOf(element)==index;
});
console.log(newArr);

调用

对象名.方法名(实参列表)

若无方法名直接访问方法

方法可以实现自调用

自调用

//一旦在函数对象后打()意味着调用该函数
(function(a,b){
    alert(a+b);
})(1,2);

参数传递

值传递 -- 基本数据类型,方法操作对实际参数无影响

引用传递 -- 对象,本质传递地址,方法操作会改变值

对象

方法和属性的集合

本质:K-V的无序集合

K默认是字符串

V可是任意类型

定义

var 对象名 = {"K":"V",...};

var 对象名 = new Object();

使用

对象名.属性名

JSON

本质是文本信息(字符串),用于数据的传递。

语法

'{"K":"V","K":"V"}'

JS与JSON互转

JSON不能传递方法信息

JSON中 - {}:对象、[]:数组

功能方法
JSON转JSJSON.parse(str)
JS转JSONJSON.stringfy(obj)

常用API

字符串

方法作用
charAt(下标)获取下标字符
indexOf(字符)字符首次出现位置
subString(起,末)从起到末截取字符
toUpperCase()转为大写
toLowerCase()转为小写

日期

方法名作用
new Date()获取当前系统的日期
var date = new Date();
// 将当前系统时间转为标准时间字符串
console.log(date.toLocaleString());

随机数

方法名作用
Math.random()随机数[0~1)
Math.floor()向下取整
Math.ceil()向上取整
// 1~10的随机数
console.log(Math.floor(Math.random()*10+1));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值