原生JS—1

js的历史

  在上个世纪的1995年,当时之网景公司刚好凭借那Navigator浏览器成Web时代开启时不过红的首先代互联网商家。

  由于网景公司愿意能于静态HTML页面及添加有动态效果,于是叫Brendan
Eich这哥们在有限到之内设计有了JavaScript语言。你莫看错,这哥俩就所以了10天时间。

  为什么起名叫JavaScript?原因是即时Java语言很红火,所以网景公司愿意借Java的声誉来放,但实际JavaScript除了语法上粗像Java,其他部分基本上没啥关系。

  JavaScript版本兼容性

  JavaScript语言是在10龙时间内规划下的,虽然语言的设计者水平很NB,但谁呢架不鸣金收兵“时间紧,任务更”,所以,JavaScript有诸多统筹缺陷,我们后面会逐年道到。

  此外,由于JavaScript的科班——ECMAScript在相连提高,最新版ECMAScript
6正规(简称ES6)已经当2015年6月专业颁布了,所以,讲到JavaScript的版本,实际上就是它实现了ECMAScript标准的谁版本。

  由于浏览器在宣布时便规定了JavaScript的本,加上很多用户还以采取IE6这种古老的浏览器,这就算导致你于写JavaScript的早晚,要照料一下老用户,不可知平等齐来即使因故新型的ES6正规写,否则,老用户的浏览器是无能为力运行新本子的JavaScript代码的。

  js的组成

  ECMAScript

  ECMAScript是一个规范。

  因为网景开发了JavaScript,一年后微软以套JavaScript开发了JScript,为了让JavaScript成为世界正式,几只公司联合ECMA(European
Computer Manufacturers
Association)组织定制了JavaScript语言的正规,被称为ECMAScript标准。

  所以简单说来就是,ECMAScript是均等栽语言专业,而JavaScript是网景公司对ECMAScript标准的同种实现。

  那干什么不直把JavaScript定为专业也?因为JavaScript是网景的注册商标。

  不过多数时段,我们还是用JavaScript这个词。如果你碰到ECMAScript这个词,简单把它们替换为JavaScript就实施了。

  DOM

  DOM:Document Object
Model。文档对象模型,后止我们见面生特意的课程来上课DOM操作

  BOM

  BOM:Browser Object
Model。浏览器对象模型,后止我们吧会见特地来讲bom操作

  JavaScript的特点

  (1)、一种植解释性执行的脚本语言。

  同其他脚本语言一样,JavaScript也是平栽解释性语言,其提供了一个坏便于的开进程。JavaScript的语法基本构造形式以及C、C++、Java十分近似。但当动用前,不像这些语言需要先编译,而是于程序运行过程遭到为逐行地诠释。JavaScript和HTML标识结合在一起,从而利于用户的利用操作。

  (2)、一栽基于对象的脚本语言。

  其也可被看做是平等种植面向对象的语言,这象征JavaScript能以该已创造的靶子。因此,许多效可以来于下论环境中目标的计及剧本的相互作用。

  (3)、一栽简单弱类型脚本语言。

  其简单性主要体现在:首先,JavaScript是一样栽基于Java基本语句和控制流之上的简要而严密的计划性,从而对使用者学习Java或任何C语系的编程语言是平等栽死好之过渡,而对所有C语系编程功底的程序员来说,JavaScript上亲手也非常容易;其次,其变量类型是用弱类型,并未使用严格的数据类型。

  (4)、一栽对立安全脚本语言。

  JavaScript作为一如既往种安全性语言,不吃允许看当地的硬盘,且无克拿数据存入服务器,不允许对网文档进行改动及去,只能通过浏览器实现信息浏览或动态交互。从而使得地防止数据的丢失或针对系统的非官方访问。

  (5)、一种植事件驱动脚本语言。

  JavaScript对用户的响应,是为事件驱动的章程进行的。在网页(Web
Page)中施行了某种操作所产生的动作,被喻为“事件”(Event)。例如按下鼠标、移动窗口、选择菜单等还足以让视为事件。当事件有后,可能会见招相应的波响应,执行某些对应之本子,这种机制于称为“事件驱动”。

  (6)、一种超平台性脚本语言。

  JavaScript依赖让浏览器本身,与操作环境无关,只要计算机能运作浏览器,并支持JavaScript的浏览器,就只是对执行,从而实现了“编写一不善,走遍天下”的想望。

  因此,JavaScript是一律种新的描述语言,其好给放置到HTML文件中。JavaScript语言可以完成一呼百应使用者的需事件(例如表单的输入),而无需外的纱来回传输资料。所以当一号使用者输入一码资料时,此资料数据并非通过传被服务器(server)处理还传回到的经过,而一直可以被客户端(client)的应用程序所处理。

  3、JavaScript的利弊

  (1)、JavaScript的优点:

  <1>.JavaScript减少网络传输。

  以JavaScript这样的用户端脚本语言出现之前,传统的数据交到和认证工作皆是因为用户端浏览器通过网传输至服务器上进行。如果数据量很可怜,这对于网及服务器的资源来说实在是均等栽无形之浪费。而用JavaScript就足以于客户端进行多少印证。

  <2>.JavaScript方便操纵HTML对象。

  JavaScript可以好地决定各种页面被之目标,用户可用JavaScript来控制页面被相继要素的外观、状态还运转方式,JavaScript可以依据用户的用“定制”浏览器,从而使网页更加温馨。

  <3>.JavaScript支持分布式运算。

  JavaScript可以使多任务就在用户端就得就,而无需要网络与服务器的插足,从而支持分布式的运算和拍卖。

  (2)、JavaScript的局限性:

  <1>.各浏览器厂商对JavaScript支持程度不一。

  时于互联网及产生不少浏览器,如Firefox、Internet
Explorer、Opera等,但每种浏览器支持JavaScript的档次是不相同的,不同的浏览器在浏览一个饱含JavaScript脚本的主页时,由于针对JavaScript的支持小有异,其力量会有肯定的距离,有时还是会见显不出来。

  <2>.“Web安全性”对JavaScript一些效应牺牲。

  当把JavaScript的一个统筹目标设定也“Web安全性”时,就得牺牲JavaScript的片段功效。因此,纯粹的JavaScript将未可知开拓、读写及保留用户电脑达之文书。其有且访问的唯一消息就是是该JavaScript所措的酷Web主页中的音信,简言之,JavaScript将只在叫她好之小小世界—Web主页里。

  js的引入方式

  在相同针对 script 标签中引入js代码

  通过这种办法引入,可以把js代码和html代码写以和一个文件中,但是注意:最好将js代码写于body之后,文档的加载顺序是打达到顶下加载的,先把页面内容渲染出来,再加入用户交互,这样用户体验会大大提高。

  示例代码:

    <html lang=”en”>

    <head>

        <meta charset=”UTF-8″ />

        <title>js基础一</title>

    </head>

    <body>

    </body>

    <!–script 最好放在body之后,处理相互事件,等到内容显示之后–>

    <script type=”text/javascript”>

            //警告框

            alert(‘网络错误!’);

        </script>

    </html>

  用浏览器打开效果如下:

  引入外部js代码

  我们得拿js代码写以一个后缀为.js的文件被,然后把这js文件引入html文档里

  操作步骤:

  创建一个目文件夹例如为js,然后重新是文件夹着开创一个一个后缀为.js的一个js文件,例如叫做index.js;

  在script标签中之src中写入js文件的门路。

  示例代码:

    <!doctype html>

    <html lang=”en”>

    <head>

        <meta charset=”UTF-8″ />

        <title>js基础一</title>

    </head>

    <body>

    </body>

    <!–script 最好放在body之后,处理相互事件,等到内容显示之后–>

    <!–次种方法:引入js文件–>

       <script src=”js/index.js” type=”text/javascript”>

       </script>

    </html>

  alert语句

  我们注意到上我们采用到了一个讲话:alert(‘网络错误!’);。这是一个alert语词,用来当浏览器中弹奏来一个提示框的。

  js中的变量

  什么是变量?

  变量首先是一个容器,可以为此来存放数据,而且存放于是容器中之数码可以发生变化。举个例子:我有一个盆子,这个盆子中既好装作沙子、也堪装水,还好装粮食。这个盆子就可以看做一个变量,里边装的趟、沙子、粮食就是存于变量中的价值。

  在生活中,我们使用纸张来记录及保存信息,而以处理器中,我们利用变量来保存信息。变量的定义基本上和初中代数的方程变量是一致的,只是当微机程序中,变量不仅可是数字,还足以是不管三七二十一数据类型。

  如何定义变量?

  使用主要字 var +变量名 + =(赋值号) + 值 + ; 就可以定义一个变量。

  示例代码:定义一个变量:

  var a = 12;

  以上代码定义了一个变量 a ,变量里保存的值是数值12 。

  变量的命名规则

  变量在JavaScript中即使是因此一个变量名代表,变量名是高低写英文、数字、$和_的做,且不可知用数字开。变量名吧无能够是JavaScript的机要字,如if、while等。声明一个变量用var语句,比如:

var a; // 申明了变量a,此时a的价为undefinedvar $b = 1; //
申明了变量$b,同时为$b赋值,此时$b的价为1var s_007 = ‘007’; //
s_007凡一个字符串var Answer = true; //
Answer是一个布尔值truevar t = null; // t的值是null

  变量名吧堪是华语,但是出于汉语的兼容性不好,所以不用以中文作为变量名。

  变量命名规范:

  类型前缀

  首字母大写

 

  js的核心数据列

  Number

  number是数值类,在生活中,我们把没小数员之数称作整数,带有小数位的数称作小数(计算机被让浮点数),JavaScript不分整数和浮点数,统一用Number表示,以下且是法定的Number类型:

var a = 123; // 整数123var a = 0.456; // 浮点数0.456var a =
1.2345e3; // 科学计数法表示1.2345×1000,等同于1234.5var a = -99; //
负数NaN; // NaN代表Not a Number,当无法测算结果经常用NaN表示Infinity; //
Infinity表示最好好,当数值越了JavaScript的Number所能表示的绝充分价值时,就象征也Infinity

  Number类型的屡屡得进行加、减、乘、除、求余、自增、自减运算

  字符串

  字符串是为单引号’或对引号”括起来的人身自由文本,比如’abc’,”xyz”等等。请小心,”或””本身才是一模一样栽象征法,不是字符串的如出一辙部分,因此,字符串’abc’只有a,b,c这3只字符。

  如果’本身吗是一个字符,那即便可以用””括起来,比如”I’m
OK”包含的字符是I,’,m,空格,O,K这6个字符。

  如果字符串内部既涵盖’又含有”怎么惩罚?可以为此转义字符\来标识,比如:

‘I\’m \”OK\”!’;

  代表的字符串内容是:I’m “OK”!

  转义字符

  `意味着转义字符,在微机被,有些异常之字符被网予以了突出意义,如’表示括住字符串。但是想出口一个’怎么收拾?我们就是可像上一样使用转移字符`,在特殊字符前补加一个转义字符,计算机就见面将这个特殊字符当做普通的字符串来拍卖。

  布尔值

  在计算机被,我们因此真的表示原则建立,用借表示法不建。真和假就是布尔值(bollean)。

  以js中,我们以true来表示确实,用false来代表假。布尔值只有真正与假,没有老三单价值。布尔值经常用当标准化判断中。

var bo1 = true;//布尔项目 结果true和false

 //typeof()获取变量的数据类型,(在匪掌握变量类型的情景下,也足以由此ypeof()获取)

 alert(typeof(bo1));

  null和undefined

  null表示一个“空”的值,它和0暨空字符串”不同,0凡是一个数值,”表示长度为0的字符串,而null表示“空”。

  于旁语言中,也生类似JavaScript的null的代表,例如Java也就此null,Swift用nil,Python用None表示。但是,在JavaScript中,还有一个及null类似的undefined,它代表“未定义”。

  JavaScript的设计者希望就此null表示一个空的价值,而undefined表示值未定义。事实证明,这并无呀卵用,区分两者的义不死。大多数动静下,我们都当据此null。undefined仅仅以认清函数参数是否传递的图景下发生因此。

  拓展 undefined类型

 

 //如果我们无给某变量设置值,则为undefined类型;var color;

alert(typeof color);

  js中之运算符

  算数运算符

  +加

  -减

  *乘

  /除

  %求余(取模)

  赋值运算符

  =赋值

  +=加后赋值

  -= 减后赋值

  *= 乘后赋值

  /=除后赋值

  %=模后赋值

  关系运算符

  >大于

  <小于

  <=小于等于

  >=大于等于

  ==等于(如果左右点儿限种不雷同,则隐式转换为同一的品类后重新于)

  ===等于(如果左右零星度种不平等,则归false)

  !=不等于(如果左右星星度种不雷同,则隐式转换为同一的类后再度比)

  !==不齐(不更换类型,直接比较)

  逻辑运算符

  &&与

  ||或

  !非

  js的逻辑运算符

  逻辑运算产生的结果是一个布尔值,js中产生三种逻辑运算符:

  &&与

  ||或

  !非

  逻辑与&&

  书写方式:表达式一 &&
表达式二。逻辑和表达式为实在条件是:左右少于度的表达式同时成立时,整个逻辑与表达式才起,只要发生一个表达式不建,整个逻辑表达式为假。

  逻辑或||

  书写方式:表达式一 ||
表达式二。逻辑或表达式为真正条件是:左右少于限的表达式,这要是中一个乎真正,则整个表达式为真。只有在片限表达式同时为假时,整个表达式才为假。

  逻辑非!

  书写方式呢:!表达式。逻辑非是本着原的表达式结果进行得反操作。如原来表达式为实在,则进行逻辑非操作后,返回的价是借用;元表达式为假,进行逻辑非运算后表达式为真。