二阶段自我总复习
1.javascript基础 :
客户端 安全性 跨平台 脚本语言
三大结构: 顺序 、选择、循环
顺序:运算符和表达式
逻辑运算符: 与&& 或|| 非! 如:5||6 5&&6
算术运算符: + - * / % ++ --
关系运算符: > < == ===
条件运算符(三目) ? :
赋值 = += -= *= /= %=
数据类型: 基本: string number boolen
复合数据类型 : object
特殊 null undefined
es6新增的数据类型 : symbol
(扩展)
typeof 测试变量的数据类型
typeof typeof 数据 ---> string
运算符的优先级
() > 单目 > 算术 > 关系 > 逻辑 > 条件 > 赋值
*/% +- && ||
类型转换
在算术运算和关系运算中, 纯数字字符串会自动转换成数值进行计算 null 会自动转换成0 undefined 会自动转换成 NaN
如: 1 + null = 1
1 + undefined = NaN
"a" > undefined false
强制类型转换: 强制将某个类型转成另一个类型,如果不能正常转换,结果就是NaN
parseInt() 将字符串转成整数
parseInt("12") -- 12
parseInt("12ab") -- 12
parseInt("ab12ddd") -- NaN
parseInt("ab12") --- NaN
parseInt("12a34"); --12
parseFloat() 将字符串转成小数
parseFloat("12.34ab34"); -- 12.34
parseFloat("12ab12.34"); -- 12
Number() 尝试将某个类型转成 数值型 如果不能转换,值为NaN
Number( true ) 1
Number( false ) 0
Number("12") 12
Number( "12ab" ); NaN
Number( "12ab34" ) NaN
toString() 尝试将某个类型转成字符串
eval() 将一个字符串转成表达式 并返回表达式的值 (将引号去掉)
alert( "2+3" );
alert( eval("2+3") );
eval("alert(2)");
2.js中标识符(变量)的命名规范
a、js中的标识符只能由 字母、数字、下划线、$ 组成(不建议用中文)
b、标识符 不能用 数字 开头
c、不能使用系统指定的关键字命名
3.if和switch 选择结构 控制语句
if常用于对一定范围进行判断
if判断条件:
1:所有非0的数字都表示true 否则为false
2:所有非空字符串都表示true 否则为false
3:条件直接写true 程序执行 false则不执行。
4:if(NaN) 返回 false
5:if(undefined) 返回false
6:if(null) 返回false;
7:所有对象返回 true;
8:所有存在的函数 返回的true;
switch常用于对固定的值进行判断。
switch ( 表达式 ){
case 常量 : 语句;
case 常量 : 语句 ;
case 常量 : 语句 ;
case 常量 : 语句 ;
.......
default : 语句 ;
}
执行逻辑:
如果 case 后面的常量1 和 表达式1的结果匹配,开始执行 语句1;、
如果 case 后面的常量2 和 表达式1的结果匹配,开始执行 语句2;
......
如果所有的case 后面的值都不匹配 则执行的 是 default 后面的语句5
特点:case 有穿透性
怎样阻止case的穿透性:break语句。
附:下拉菜单写法: <select>
<option></option>
<option></option>
</select>
4.循环结构
for while do...while for...of for...in forEach() break和continue
1.循环的五大要素:
a:循环的变量
b:变量的初始值
c:循环体
d:变量的增值
e:循环的终止条件
循环的作用:
1:重复执行一段代码,简化代码
2:遍历数组、遍历对象、遍历节点集合......
2.for循环的语法:
for(语句1;语句2;语句3){
循环体
}
for语法解析:
语句1:声明循环变量、并且初始化 eg: var i = 1;
语句2:循环的条件。 eg:i <= 100;
语句3:循环变量的增值 eg:i++
for 执行逻辑:
先执行语句1(声明循环变量,并且对变量初始化),然后执行语句2(判断是否符合循环条件,如果条件成立则进入循环体。)循环体执行完之后,开始执行语句3(变量的增值,增值之后,再次执行语句2,开始对循环条件进行判断。)
3.while循环
语法:
while(循环条件){
循环的代码。
}
while与do while的区别:
while:先对循环条件进行判断,如果条件成立则进入循环,如果不成立直接跳出(一次都不执行)
do while: 先对循环体执行一次,执行完一次之后,再对循环条件进行判断,如果条件成立则进入循环,否则跳出
while的执行逻辑:
1:对条件表达式进行判断
2:如果条件不成立,一次也不执行,直接跳出循环
3:如果条件成立。进入循环,开始循环“循环体”,循环一次之后,再次对条件进行判断,如果成立则继续执行“循环体”。如果不成立则跳出循环
while的跳出:
1:对循环条件的判断
2:break跳出(终止循环)
5.函数
关键字function创建
function myFn(){}
字面量形式
var myFn = function(){}
构造函数形式
var myFn = new Function();
函数的应用(调用函数):
自调用 语法: 函数名(); 函数名称后面有() 函数则执行。
事件调用 事件源(绑定事件的元素).onclick = function(){}
函数的特点:
1:隐藏函数内部结构。
2:函数不会自动执行,再调用的时候才会执行(选择性应用)
3:重复应用,
函数的递归调用 : 自己调用自己
function fn(m){
if(m==1){
return;
}else{
console.log( "hello" );
fn(m-1);
}
}
fn(3);
匿名函数自执行:
(function(){ })()
6.arguments对象
arguments.length 实参的个数 arguments[0];
通过arguments对象的length属性,可以判断实参的个数
打印所有传递的实参/
function fn(){
for(var i = 0 ; i < arguments.length ; i++){
console.log(arguments[i]);
}
}
fn(3,4,5,6,7,8,9)
7.返回值 return:
return 1:函数得返回值
2:调用函数得时候,希望从函数里面获得的数据
3:如果没有return 函数返回的undefined
4:在函数里面遇到return 直接返回。后面的代码不再执行。(break;)
5:return 只能出现在函数里面。
6:return只能返回一个结果。
8.变量提升
js的执行:
预编译(预解析)
第一步:js 先去检测语法错误。(先去检测语法,如果语法错误,直接报错,不执行)
第二部:变量提升。(把所有var声明的变量,提前到当前作用的最前面,所有的赋值语句原地等待)执行
变量提升:
先把所有var声明的变量,提前到当前作用的最前面
再次提升的是用关键字function定义函数
(函数的权重大于变量)
9.内置对象
a.数组Array 操作方法:
forEach() filter() map() reduce() indexOf() splice()--删除 替换 添加 slice() join() reverse() concat()
pop() push() shift() unshift() some() every()
b.字符串对象 String
字符串的操作方法:
indexOf() charAt() charCode() String.fromCharCode() slice() substr() substring() split() replace()
toLowerCase() trim()
10.正则
正则表达式对象 RegExp()
正则的特殊字符 :
写一个身份证正则 : /^\d{17}(\d|x)$/
正则的操作方法 : test() exec()
参数是正则的方法 :replace match search()
实现 :
使用正则去掉字符串中所有空白字符: " heheh hehaha haha ".replace( /\s/g , "" )
var arr = ["tmd","mmp","sb"];
var str = "hello sb sb tmd mmp wold tmd tmd";
for( var i = 0 ; i < arr.length ; i++ ){
var reg = eval("/"+arr[i]+"/g");
var reg =new RegExp( arr[i] ,"g" )
str = str.replace(reg,"*")
}
console.log( str )
- 1. web前端开发分享-css,js入门篇
关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...
- web前端开发分享-css,js入门篇(转)
转自:http://www.cnblogs.com/jikey/p/3600308.html 关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人 ...
- web前端开发分享-css,js入门篇
学习没有捷径,但学习是有技巧与方法. 一,css入门篇: 推荐书籍:css哪些事儿,精通css. 理由:css那些事儿,他是一本介绍css基础类的书,是入门的经典读物. 系统的介绍了css的选 ...
- HTML+CSS+js常见知识点
一.HTML.CSS常见知识点 1.垂直居中盒子 /* 方法一 */ html, body { width: 100%; height: 100%; padding: 0; margin: 0; } ...
- 【JavaScript】JS从入门到深入(复习查漏向
[JavaScript]JS从入门到深入(复习查漏向 pre 精细得学过一遍JS后才发现,原来之前CTF中有些nodejs的题目以及一些游戏题的payload就变得很好理解了. 基础知识 ECMASc ...
- C/C++编程笔记:C语言入门知识点(二),请收藏C语言最全笔记!
今天我们继续来学习C语言的入门知识点 11. 作用域规则 任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问.C 语言中有三个地方可以声明变量: 在函数或块内部的局部变量 ...
- JS重要知识点
这里列出了一些JS重要知识点(不全面,但自己感觉很重要).彻底理解并掌握这些知识点,对于每个想要深入学习JS的朋友应该都是必须的. 讲解还是以示例代码搭配注释的形式,这里做个小目录: JS代码预解析原 ...
- JS重要知识点(转载 学习中。。。)
这里列出了一些JS重要知识点(不全面,但自己感觉很重要).彻底理解并掌握这些知识点,对于每个想要深入学习JS的朋友应该都是必须的. 讲解还是以示例代码搭配注释的形式,这里做个小目录: JS代码预解析原 ...
- js基础系列框架:JS重要知识点(转载)
这里列出了一些JS重要知识点(不全面,但自己感觉很重要).彻底理解并掌握这些知识点,对于每个想要深入学习JS的朋友应该都是必须的. 讲解还是以示例代码搭配注释的形式,这里做个小目录: JS代码预解析原 ...
随机推荐
- deque双端队列笔记
clear()clear()clear():清空队列 pushpushpush_back()back()back():从尾部插入一个元素. pushpushpush_front()front()fro ...
- springboot项目快速构建
1. 问题描述 springboot的面世,成为Java开发者的一大福音,大大提升了开发的效率,其实springboot只是在maven的基础上,对已有的maven gav进行了封装而已,今天用最简单 ...
- canvas粒子线条效果
在正式开始之前,先上个效果图看看: 很酷炫有木有??? 那么如何实现这个效果呢? 首先,我做这个特效的基本步骤是这样的: 1.将若干个粒子随机分布在画布(canvas)上,并且给他们一个初始速度 2. ...
- STM32-I2C_CheckEvent-标志位自动清除理解
STM32里I2C_CheckEvent函数我们应该是相当熟悉了,在每次发送数据后我们都需要检验相应的EVx(x = 0,1,2,,,)事件是否有发送. 函数定义如下: ErrorStatus I2C ...
- [PTA] 数据结构与算法题目集 6-2 顺序表操作集
//创建并返回一个空的线性表: List MakeEmpty() { List L; L = (List)malloc(sizeof(struct LNode)); L->Last = -1; ...
- 快速掌握mongoDB(五)——读写分离的副本集实现和Sharing介绍
1 mongoDB副本集 1 副本集简介 前边我们介绍都是单机MongoDB的使用,在实际开发中很少会用单机MongoDB,因为使用单机会有数据丢失的风险,同时单台服务器无法做到高可用性(即当服务器宕 ...
- 我狠起来连自己都打---如何简单实现Azure resource自动打标签
你是否还在为花费大量Azure Resource打标签而烦恼呢?你是否还在因为这样低效的重复劳动而痛苦呢? 在很长一段时间内,笔者既要做云架构调整,又要做日常系统维护,还要参与各种各样的项目,在这种情 ...
- Java提供的几种线程池
线程池,顾名思义,放线程的池子嘛,这个池子可以存放多少线程取决于你自己采用什么样的线程池,你的硬件资源,以及并发线程的数量.JDK提供了下面的四种线程池: 固定线程数的线程池 最简单的 在Java中创 ...
- flink入门实战总结
随着大数据技术在各行各业的广泛应用,要求能对海量数据进行实时处理的需求越来越多,同时数据处理的业务逻辑也越来越复杂,传统的批处理方式和早期的流式处理框架也越来越难以在延迟性.吞吐量.容错能力以及使用便 ...
- Pivotal:15分钟部署你的应用
“ 本篇文章介绍的是PaaS平台Pivotal Cloud Foundry(以下简称PCF)的初步使用,相比于传统的IaaS平台(比如阿里云),PCF可实现快速迭代开发与部署,让您专注于业务开发.” ...