js学习笔记

解释性语言 JS、PHP 编译一行解释一行
编译性语言 Java、C~ 编译完了在执行
[程序设计步骤]
1.软件计划
2.需求分析设计
3.软件设计
4.软件开发
5.软件测试
6.运营与维护

标识符的命名规范
1.硬性要求
A:可以是字母、数字、下划线、美元符号(不允许其他符号)
B: 不能以数字开头
C: 不能使用关键字和保留字
D: 大小写敏感(即区分大小写)
2.软性要求:望文知意
命名方法
1.大驼峰 NiQingRen
2.小驼峰 niQingRen
3.蛇形 ni_qing_ren
4.匈牙利 S_account 数据类型首字母_变量名
[扩展]
1.暂时性死区 (先使用后声明触发报错Cannot access ‘a’ before initialization)
ES 的全称是 ECMAScript,它是由 ECMA 国际标准化组织 制定的一套脚本语言的标准化规范。
引用数据类型,存储的是地址,因此地址里的数据可以发生变化。创建一个引用数据类型时是定义一个空间命名为001;然后存储的001这个空间。
【创建变量】
ES5 var xx; 声明的变量,可以重复声明
ES6 let和const; let声明变量,const声明常量。
【数据类型】
1 基本数据类型(值类型):
String 字符串 “” ‘’ (字符串模板ES6,内写${变量名}) name = "lzy" console.log(`${name}欢迎光临`); Number 数值 整形、浮点型、NaN(it not a number) Boolean 布尔值 0、undefined、null、false、(空字符串)、NaN;只有这个6个会转换为false,其他均为true;
Null 空值 专门用来定义一个空对象(例如:let a = null)。
Undefined 未定义 变量声明未赋值取undefined (typeof a)
Symbol 功能:避免在新增数据时,更改原有的属性或方法。可以是使用Symbol(唯一性)来创建。
2 引用数据类型(引用类型):
Object 对象。
console.log(null == undefined); //true
【运算符】
1 赋值运算符 = += -= *= /= %=
2 一元运算符 自增 自减 +=
3 自增/自减运算符 ++ –
++i 先自增,在使用
i++ 先使用,在自增
4 算术运算符 + - * / %
5 逻辑运算符 || && ! 或与非 返回boolean值 &&工作原理 先判断第一个值,为真,则判断下一个;为假则返回。全为真返回最后一个。
6 比较运算符 > < == != <= >= ===全等于(值相同,类型也相同) !不全等于
7 三目运算符 条件表达式? 语句1 : 语句2;
值为true,则执行语句1,并返回执行结果
值为false,则执行语句2,并返回执行结果
【位运算符】 十进制转二进制
//通过(&或|) 按位计算,再转十进制
console.log(1 & 2) 1二进制01 2二进制10 按&位计算 10+01
00
【条件语句】
switch(匹配值){
case 表达式1:代码块1;break;
case 表达式2:代码块3;
···
default:代码块;
}
switch 匹配值和case后面的表达式匹配为全等匹配。
所有case都不匹配时,则执行default的代码。
【数组Array】没有多维数组,模拟实现。
一个变量,可以存储多个数据,并且数据的类型可以不同。
索引起始值为0;超出索引下标的值为underfined。负值也为underfined.
字面量与构造函数的区别:字面量创建的数组,解析速度更快。原因1.json格式,js引擎可以直接解析。构造函数需要先调用在进行解析。
数组属性
length 数组长度
数组方法
indexof 从第一个值查找元素返回索引,没有则返回-1;
lastIndexof 从最后一个值查找。
判断一个数组中有没有重复的值,用indexof和lastIndexof查找同一个值,返回的值相等为没有重复值。
【集合Set】
Set 中的元素是唯一的(全等匹配)。可以放入数组,Set, Map来初始化
属性
size 集合数据个数
方法
add 增加数据 set.add().add();链式调用,返回值为set本身;
delete 删除数据 参数为数据值
clear 清空集合
has 查找元素 返回boolean值
【函数】
三要素:函数名、参数、返回值;
书写格式:
字面量(声明式): function name(n1,n2){代码块 return xx;};
构造函数: let xx = new Function();
函数表达式: let xx = function(){代码块;}
函数提升:只提升字面量生成的函数。
变量提升:只提升var声明的变量。不包含函数。提升变量的声明,不提升赋值。
参数:
形参个数多,多的形参值为underfined
形参默认值:形参名=表达式;若没有实参就用默认值,有就用实参值;形参不给值为underfined
函数名.length 形参个数,不统计默认值及以后的形参

    实参个数多,用...标识符来接受实参并以数组的形式存放
    arguments 以数组的形式存储实参。arguments.length实参个数。类数组(假),使用方式为arguments[index],原因:不能用数组的方法。

【回调函数】
一个函数提供给另一个函数作为参数,那么这个函数就是回调函数.
【箭头函数】
函数的另一个书写格式。(a, b) => a - b
1.省略function;
2.只有一条语句可以省略大括号;
3.如果这条语句是返回值表达式,可以省略return。
4.如果参数只有一个可以省略小括号
5.不可以使用arguments
6.【DOM】不会自己的this绑定到函数上 。
7.不可以用于构造函数
【立即执行函数】
声明即调用,调用即销毁
IIFE:Immediately Invoked Function Expression;
【对象】
对象初始化
let obj = {
属性名:属性值,
方法名:function(){
代码块;
},
}
查找
· 对象名.属性名
· 对象名[属性名]
this 在当前对象中表示当前对象
【映射】
和对象区别:可以使用一个非字符串的属性名当键名。
【正则】RegExp: RegularExPression
功能:描述了一个字符串的匹配方式。即:用户输入的内容是否符合要求(规则)
【递归】
适用场景:阶乘
【预编译】
全局作用域/局部作用域/块级作用域
未声明就赋值的变量,此变量就会变为全局变量(浏览器window属性);如果在函数中,要调用函数才能执行。
工作原理
局部作用域
1.创建AO对象。AO即 Activation Object 活跃对象,其实就是「执行期上下文」。
2.找形参和var声明的变量,将形参名和变量作为 AO 的属性名。
3.初始化AO属性名,值为undefined。
4.将实参值和形参统一,实参的值赋给形参。
5.提升字面量声明的函数到函数的第一行
全局作用域
1.创建GO对象。
2.var声明的变量(不包含函数中的),Go对象属性名。
3.初始化属性名。
4.提升字面量声明的函数到第一行
函数名是GO的属性值,属性值是函数体。
注:在函数中存在未声明就赋值的变量,当函数被执行时,该变量才添加到GO。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值