Tips:基础不牢,地动山摇
章节一:
引入:为什么要用框架:之所以是框架,是为了给你提供一个编程的便利。
五大主流浏览器
前端接触最多的东西:浏览器,浏览器具有自己的内核
5大主流浏览器 内核(JS引擎+渲染引擎)
IE -> trident
chrome-> webkit、blink
safari -> webkit
firefox -> gecko
opera -> presto
浏览器历史和JS诞生
- 1990年,有一个人叫 蒂姆 博纳斯 李 ——>这个人呢 是做超文本分享资讯的——>他呢 开发了一个叫 World Wide Web 这样的一个浏览器——>他将这个浏览器 移植到c语言上 改名为 libwww后来发展成了nexus,这是一个真正意义上的浏览器(允许别人浏览他人编写的网站)
- 1993年,在美国的一所伊利诺大学——>有一个组织叫 NCSA——>组织这个组织里有一个成员叫(马克 安德森)这个人开发了一个叫MOSIAC浏览器,这个浏览器可以显示图片,是一个真正意义上图形化的浏览器
- 1994,马克 安德森和吉姆 克拉克 (这个人是美国硅图公司(SGI)的)他们俩成立了一个公司叫MOSIAC Communication Corporation,在公司的发展途中,公司黄了,原因是MOSIAC有商标权,是归伊利诺大学的,在马克 安德森走之后,把商标权卖给了spy glass这个公司,后来安德森将公司改名为Netscape Communication Corporation,也就是网景公司,在MOSIAC基础上开发的Netscape navigator——网景导航者
- 在1996年发生了三件事
(1)微软收购了spy glass并且开发了IE internet exploror 同时发布了IE3,它的诞生出现了第一个script脚本,JSscript1.0 ->IE3+Jscript
(2)网景公司的Brendan eich这个人,在netscape navigator 浏览器的基础上开发出了一个脚本语言,叫 livescript
(3)在这一年 JAVA火起来了,网景公司的 liveScript 不温不火,JAVA所有权SUN公司,网景公司的 liveScript与SUN公司 商量合作和宣传产品,将livescript改名为javaScript - 2001年,IE6XP诞生,JS引擎诞生
- 2003年,mozilla公司的firefox诞生
- 2008年,google基于webkit+blink+gears(离线浏览网页功能)=>chrome浏览器
progressive web app渐进式APP => chrome->v8引擎 (js引擎)—这时就有一个叫node.js:它是一个基于chromeV8引擎的JS运行环境
v8引擎的优点:
1.直接翻译机器码
2.独立于浏览器运行
- 2009年,甲骨文oracle收购了SUN公司,JS的所有权归甲骨文
章节二:
先说说 ECMA:European Computer Meaufactures Association 全名:欧洲计算机制造联合会 ——日内瓦(瑞士),这个组织是评估开发认可电信,计算机标准的一个组织
ECMA-262 是脚本语言的规范
再说说编程语言,编程语言又叫做高级语言,就是人能理解,计算机不理解,需要翻译:编程语言分为编译型和解释型
编译型:源码通过编译器,变成可执行文件
解释型:源码通过解释器,解释一行执行一行,不需要根据不同的系统,平台进行移植
紧接着看一下脚本语言:脚本语言一定要有脚本引擎,通过脚本引擎的解释器才能正常运行
脚本语言有前端脚本语言与后端脚本语言
前端:JAVAScript 客户端脚本(浏览器脚本)
后端:PHP脚本,服务器脚本
介绍一下多线程与单线程
多线程:可以同时做多件事
单线程:只能同时做一件事,JS引擎可以模拟多线程,有个东西叫轮转时间片:意思是短时间之内轮流执行多个任务的片段
轮转时间片的执行步骤:1.假设有任务一,任务二
2.先切分任务一,任务二
3.随机排列这些任务片段,组成队列
4.按照队列顺序将任务片段送进JS线程
5.JS线程执行一个又一个的任务片段
再说一下动态语言与静态语言
动态语言->脚本语言->解释型语言->弱类型语言(弱化数据类型)->根据值判断数据类型
静态语言->编译型语言->强类型语言->根据数据类型判断值
章节三:
JavaScript组成
1.ECMAScript 语法+变量、关键字、保留字、值、原始类型、引用类型、运算、对象、继承、函数
2.DOM document object Model W3C规范
3.BOM browser object Model 无规范
首先说一下变量:变量:存储数据的一个容器
例如:var a = 3 分为两个部分:
1.声明一个a
2. 将3赋值给a
‘=’ 是赋值的意思
优先级:括号优先级>运算优先级>赋值优先级,运算符的左右两边要有空格
null:空值 会用于初始化组件,函数,销毁函数,占位
引用值:object / array / function / date / RegExp
重点:堆:值的地址存在栈内存
栈:先进后出,数据永久保存,不可改
浏览器报错类型:1.SyntaxError 语法错误 一行都不执行
2.ReferenceRrror 引用错误 中断执行
// 1.demo:用计算机语言叙述内容
var a = 1;
b = 2;
d = 3;
var c = (a + b) * d
描述:首先 1.声明变量c
2.变量a的值和变量b的值相加,与变量d的值相乘得到结果
3.将该结果赋值给变量c
+数字运算 字符串拼接
任何数据类型的值 + 字符串 都是字符串
了解++ –
demo1:
var a = 1;
console.log(a++); //1 ++在后面,就先打印a本身,然后进行运算
console.log(a); //2
demo2:
var a = 5,
b;
b = a-- + --a //b = --a + a-- --a先运算
// --a:4 a:4 -> b:8,->a-- a:3
console.log(b,a); //8,3
demo3:
var a = 5,
b;
b = --a + --a;//--a:4先运算 ->--a:3->b:7,a:3
console.log(b,a);//7,3
demo4:
var a = 5,
b;
b = --a + a++;//--a:4先运算a++先打印后运算a++:4 ->b:8,a:5
console.log(b,a);//8,5
比较运算符
number ——>string //number和string比较,string转换为number类型
number——>number
string——>string//字符串相比较,比较对应的ASCII码,(字符相对应的十进制代码)多个字符的,从左到右一次对比,直到比较出ASCII码的大小为止
== 是不看数据类型的
===是需要看数据类型是否相等的
NaN与包括自己在内的任何东西都不相等
补充:这是我在写代码的时候,遇到的问题:
return语句就是用于指定函数返回的值。return语句只能出现在函数体内,出现在代码中的其他任何地方都会造成语法错误!小例子:
var i = 1;
for(;i;){
console.log(i);
i++;
if(i === 11){
return
}
}
语句 if
if:它的条件具有互斥性
if(){}else if(){}
//if(){} 和多个 if(){}else if(){}有什么区别:
性能上:多个if要一直判断,找到符合的才停止判断
语句 switch
switch(变量){
case 值:
语句
break; //中断循环
default:
语句
}
逻辑运算
&&:俩者为真才为真,如果有一个为假,则返回当前值 2 && 3----3 0 && 3----0
||:只要有一个为真就返回真,如果俩个都为假,就返回最后一个 3 || 2 —3 0 || 1----1
!:取反
为假的值:0,null,undefined,‘’,false,NaN