JavaScript浏览器发展史,js介绍入门,js引入,变量,值类型,运算符
javaScript 浏览器发展史
Mosaic, 是互联网史上第一个获普遍使用和能够显示图片的网页浏览器。于1993年问世。
1994年4月,马克.安德森和Silicon Graphics(简称为SGI,中译为“视算科技”或“硅图”)公司的创始人吉姆·克拉克(Jim Clark)在美国加州设立了“Mosaic Communication Corporation”。
Mosaic公司成立后,由于伊利诺伊大学拥有Mosaic的商标权,且伊利诺伊大学已将技术转让给Spy Glass公司,开发团队必须彻底重新撰写浏览器程式码,且浏览器名称更改为Netscape Navigator,公司名字于1994年11月改名为“Netscape Communication Corporation”,此后沿用至今,中译为“网景”。 微软的Internet Explorer及Mozilla Firefox等,其早期版本皆以Mosaic为基础而开发。微软随后买下Spy Glass公司的技术开发出Internet Explorer浏览器,而Mozilla Firefox则是网景通讯家开放源代码后所衍生出的版本。
js历史
JavaScript作为Netscape Navigator浏览器的一部分首次出现在1996年。它最初的设计目标是改善网页的用户体验。
作者:Brendan Eich
期初JavaScript被命名为,LiveScript,后因和Sun公司合作,因市场宣传需要改名JavaScript。后来Sun公司被Oracle收购,JavaScript版权归Oracle所有。
浏览器组成
1.shell(贝壳)部分;
例如:工具栏,下拉菜单
浏览器界面中用户能看到且能操作的部分
2.内核部分
浏览器中用户看不到的且能处理代码并且代码能够完整显示出来的部分
2.1 渲染引擎(语法规则和渲染)
从上至下绘制,主要负责html,css一些基础语法的识别,以及于这个浏览器怎么去绘制这个页面。
汽车发动机马达==>引擎
2.1 js引擎
主要负责js
其他模块
js引擎
2001年发布ie6,首次实现对js引擎的优化。
2008年Google发布最新浏览器Chrome,它是采用优化后的javascript引擎,引擎代号V8(用c语言,c++做的),因能把js代码直接转化为机械码来执行,进而以速度快而闻名。
后Firefox也推出了具备强大功能的js引擎
Firefox3.5 TraceMonkey(对频繁执行的代码做了路径优化)
Firefox4.0 JeagerMonkey
js逼格
编译性语言(c c++): 先通篇翻译,翻译成的结果汇总成一个文件,然后系统执行这个文件。
比如Java,一开始编写的是.java文件,系统执行以后会汇总成一个.class文件 ,系统会执行.class文件
优点:快
不足:移植性不好(不跨平台)
Java比较特殊:可编译可解释。
.java --> javac -- > 编译 -->.class --> jvm(通过虚拟机跨平台) -- 解释执行
解释性语言(javascript php) — (不需要编译成文件)跨平台
优点:跨平台
不足:稍微慢
翻译一行解释一行
单线程
ECMA标注 — 为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格JavaScript兼容于ECMA标准,因此也称为ECMAScript。
js介绍入门,js引入,变量,值类型,运算符
主流浏览器
IE trident
Chrome webkit/blink
firefox Gecko
Opera presto
Safari webkit
开始学习javascript
如何引入js?
页面内嵌<script></script>标签
外部引入<script src=“location”></script>
为符合web标准(w3c标准中的一项)结构、样式、行为相分离,通常会采用外部引入
js基础语法
变量(variable)
概念:将一堆数据放到变量里以便后续使用。
变量声明
声明、赋值分解:var a;a = 100;a = 200;
通过var给window上添加的属性,叫做不可配置性属性
新变量会覆盖原变量
单一var声明法: var a = 10, b = 20, c = 30, d = 40, e;
命名规则
1.变量名必须以英文字母、_、$ 开头
2.变量名可以包括英文字母、_、$、数字
3.不可以用系统的关键字、保留字作为变量名
有特殊语法含义的词叫做关键字
系统时刻在更新升级,未来可能会用这个单词当做关键字,现在可能没有什么意义,未来还有含义,这种叫做保留字。
基本语法
值类型
不可改变的原始值(stack栈数据)
Number:var b = 123.123,
String:var b = "abc",
Boolean: var b = false,
undefined: var b = undefined,
null: var b = null
引用值(heap堆数据)
array, object, function
原始值跟原始值的赋值是拷贝,他们之间是互不影响的。
例如:
var a = 10;
var b =a;
a = 20;
document.write(b);
打印出b的值为10
最后的a会在栈内存里重新申请一个房间
放入20这个值,原先存有10的房间还存在
在底部。要想删除它除非内存存满了,
然后删除,
再重新覆盖,10才会真正的删除掉。
引用值跟引用值之间的拷贝是地址,他们指向的房间一样
例如:
var arr = [1,2];
var arr1 = arr;
arr.push(3);
ducument.write(arr,arr1);
打印出的值都是[1,2,3];
通过push的方法改变数组里的内容,所以值相同
var arr = [1,2];
var arr1 = arr;
arr= [1,3];
document.write(arr,arr1);
打印出的值为[1,3]和[1,2];
最后arr砍断之前指向[1,2]这个房间的线,重新申请了一个房间,
地址改变指向[1,3]这个房子了。[1,2]这个房间还是存在的,可以数据恢复。
js语句基本规则
语句后面要用分号结束“;”
js语法错误会引发后续代码终止,但不会影响其它js代码块
错误分成两种
1.低级错误(语法解析错误)
2.逻辑错误(标准错误,情有可原)
var a =10;
document.write(a);
document.write(b);
document.write('20');
程序在解释执行之前通篇扫描没有语法错误,就会解释一行执行一行,发现b未经申明就使用,在程序执行到document.write(b)时报错,并且后续代码不执行,最后打印结果只有10
书写格式要规范,“= + / -”两边都应该有空格
js运算符
运算操作符
“+”
1.数学运算、字符串链接
2.任何数据类型加字符串都等于字符串
“-”,“*”,“/“,“%”,”=“,“()”
优先级”=“最弱,”()”优先级较高
“++”,“- -”,”+=“,“-=”,“/=“,“*=”,“%=”
其他比较特殊的运算:
逗号运算符
var a = (1 - 1, 1 + 1);
逗号运算符,前后进行计算,返回逗号后面的值
逗号运算符练习题
写出下列程序的执行结果:
var f = (
function f() {
return "1";
},
function g() {
return 2;
}
)();
console.log(typeof f);
//先算括号,然后算逗号运算符,返回后面的值,执行后面的括号,执行剩下2,所以typeof值为number
var a = 0 / 0; a为NaN
NaN 英文名为 Not a Number
var a = 1 / 0 ; a为Infinity
var a = -1 / 0 ; a为-Infinity
var a = 10;
var b = ++a - 1 + a++;
document.write(b + " " + a );
首先++a先加加,
a后赋值为11减去1值为10
,此时后面的a已被赋值为11了,
然后再加已被赋值为11的a,
然后将11的值先赋值于a再加加,
此刻a的值就变成12了。
最后打印出b值为21,a的值为12;
区别主要在于++a,先运算后赋值。 a++先赋值后运算。
上一篇: 爆笑,怎么老板(领导)都是坑货呢?!
下一篇: C++知识点-线程2-线程管理