js介绍,入门,js引入,变量,值类型,运算符
基础知识
主流浏览器: 内核:
IE trident
Chrome webkit/blink
firebox Gecko
Opera presto
Safari webkit
浏览器:1.外壳(shell) 2.内核(渲染引擎(语法规则和渲染),js渲染,其他模块)
web发展史:
Mosaic是互联网历史上第一个获得普遍使用和能够显示图片的网页浏览器,于1993年问世(真正的第一个浏览器是www浏览器,但是存在时间极短)
1994年4月,马克·安德森和Silicon Graphics(简称SGI,中译为“视算科技”或“硅图”)公司创始人吉姆·克拉克(Jim Clark)在美国加州设立了“Mosaic Communication Corporation”。Mosaic公司成立后,由于伊利诺伊大学拥有Nosaic的商标权,且伊利诺伊大学已将技术转让给Spy Glass公司,开发团队必须彻底重新撰写浏览器程序代码,且浏览器名称更改为“Netscape Navigator”,公司名称也于1994年11月正式更改为“Netscape Communication Corporation”(中译为“网景”),此后沿用至今。微软的“Internet Explorer”以及“Mozilla Firefox”(“Mozilla Firefox”中的Mozilla指的是Mosaic Killer)等,其早期版本皆以“Mosaic”为基础而开发。微软(比尔盖茨)随后买下Spy Glass公司的技术开发出“Internet Explorer”浏览器,而“Mozilla Firefox”则是网景通讯家开放源代码后衍生出的版本
JavaScript作为Netscape Navigator浏览器的一部分首次出现在1996年,其最初的设计目标是改善网页用户的体验,作者是Brendan Eich。初期JavaScript被命名为“LiveScript”,后因和Sun公司合作,因市场宣传原因更名为“JavaScript”。后来Sun公司别Oracle(甲骨文)公司收购,JavaScript的版权归Oracle所有。
2001年发布的ie6,首次实现了对js引擎的优化和分离。2008年Google发布了最新的浏览器Chrome,他是采用优化后的JavaScript引擎(引擎代号V8),因能把js代码直接转化为机械代码来执行,进而以速度快而闻名。后Firefox也推出了具备强大功能的js引擎。(Firefox3.5 TraceMonkey 对频繁执行的代码做了路径优化 Firefox4.0 JeagerMonkey)
js的特色
- 解释性语言(不需要编译成文件,方便跨平台)
- 单线程
- ECMA标注–为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可以在浏览器上运行。为了统一规格JavaScript兼容于ECMA标准,因此也称为ECMAScript
ecmascrip(原生部分,成为es),DOM(浏览器提供),BOM(浏览器提供)
翻译可分为:
-
编译性语言:通篇翻译,生成翻译完的文件,系统程序执行文件(c c++)
优点:翻译较快
不足:移植性不好(不跨平台) -
解释性语言:逐行翻译,系统执行,不生成文件(javascript php python)
优点:跨平台
不足:稍微缓慢一些 -
oak语言:(java)
.java文件 -javac-> 编译 -->. class文件 --> jvm-解释执行
js执行队列:单线程,但运作时一般以轮转时间片运作,使其若是以时间段为节点观察看起来像是多线程
js的三大部分
ECMAScript、DOM、BOM
js的引入
- 页面级的js在head元素与body元素内均可,引入script元素,在元素内书写js代码,其中其type属性的属性值"text/javascript"(可以写也可以不写,但不能写错,但有时会特意写错把他当做一个库,用来存放不运行的代码)
- 外部js文件,在引入script元素,并增设src属性,把书写js代码(后缀为.js)的文件的文件名作为属性值
当外部js引入与页面级js矛盾时,即script元素内有代码,又有src属性,且把书写js代码(后缀为.js)的文件的文件名作为属性值,只有外部引入的代码生效
注:为符合web标准(w3c标准中的一项)结构(html)、样式(css)、行为(js)相分离,所以通常采用外部引入
js基本语法
变量(variable)
变量声明:
- 声明,赋值分解
- 用var声明变量,用document.write(变量名)输出变量,且每一个var只用于输入一个变量
命名规则:
- 变量名必须以英文字母、_、$开头
- 变量名可以包括英文字母、_、$、数字
- 不可以用系统的关键字、保留字做变量名
值类型——数据类型(不能改变数字的原始类型)
原始值:
- Number(数字)等号后直接输入数字进行赋值
- String(字符串)等号都加""或’'并在符号内进行赋值
- Boolean(逻辑)只有true和false两种属性值分别表示对或错
- underfined(只有一个值其内容也是他,表示未定义的)
- null(表示占位)
注:String分为“栈”和“堆”,“栈”内为地址,“堆”内为数据。栈用变量名直接表示,堆则是具体的字符串本身
注:字符串的当前字符位的unicode>255时字节长度为2,小于255时字节长度是1
引用值:
- array(数组)
- Object(对象)
- function(方法)
- date
- RegExp
……
语句规则
- 语句后面要用分号“;”结束
- js语法错误会引发后续代码终止,但是不会影响其他js模块
- 书写格式要规范,运算符两边都应该有空格(美观,整洁且方便检查)
注:function test(){}后,if(){}后,for(){}后不用加“;”
语法错误:
- 低级错误(语法解析错误)
- 逻辑错误(语法逻辑错误)
运算操作符
-
- :
1.数学运算,字符串连接
2.任何数据+字符串都等于字符串
- :
- “-”、""、"/"、"%"、"="、"()"
“=“的优先级最低,”()“的优先级最高
“++”、”–”、"+="、"-="、"="、"/="、"%="
赋值顺序,自右向左;计算顺序,自左向右,特殊优先级特殊处理
var a = 1 / 0;
var b = 0 / 1;
则a的值是Infnity b的值是NaN