1、Javascript基本介绍与发展趋势
JavaScript能用来做什么?
页面分为:结构、样式、行为。而js的作用就是对页面进行渲染,让页面具有交互行为
JavaScript的历史?
JavaScript在设计之初只是为了做表单验证。但是现如今,JavaScript已经成为了一门功能全面的编程语言,已经是WEB中不可缺少的一部分,如今的JavaScript是一门既简单又复杂的语言,说它简单是因为可能一小时就能学会,但是如果你要真正掌握它,可能就得需要个几年的时间了。
NetScape公司在1995年着手开发了一种名为liveScript的脚本语言,为了营销目的,搭上当时媒体热炒的Java的顺风车,临时更名为JavaScript。其实,JavaScript和Java没有一点关系。JavaScript1.0获得了巨大的成功。
NetScape公司趁热打铁继续发布了JavaScript1.1版本,使得Web获得更高的关注,同时奠定了自己在浏览器届的霸主地位。
如果事情一直这样下去,那么NetScape可能依然是我们现代浏览器的霸主,可是在1996年互联网巨头微软公司进入浏览器领域,推出JScript,和NetScript公司开始争夺博主地位。
最让人担心的问题也因此出现,当时的JavaScript和JScript是完全不同的两个版本,这个方向的语言没有一个标准存在,业内的吐槽日益严重。终于,多方联合共同制定了一个标准,这个标准就是ECMAScript,ECMAScript做为JavaScript实现的基础。虽然制定标准之花费了几个月,但是这几个月却对未来20年的JavaScript发展起到的决定性的作用。
此时经过NetScape和微软的争夺,各大互联网厂商都发现了浏览器这块巨大的蛋糕,于是一场激烈的厮杀就开始了......
第一次浏览器世界大战:

最终的结果是微软的ie获胜

但是NetScape并没有放弃,在1998年公开源码,并重新命名为Mozilla,并重写所有程序,在2002年发布了第一个浏览器版本FireFox登场,在2004年开始叫板IE浏览器,IE推出IE7与之抗衡,拉开了第二次浏览器大战的序幕。
第二次浏览器世界大战:

而这次胜出的却是用户

JavaScript的组成:
ECMAScript、BOM、DOM
ECMAScript是一个标准,它规定了语法、类型、语句、关键字、保留子、操作符、对象。(相当于法律)

BOM(浏览器对象模型):可以访问浏览器窗口的浏览器对象模型,对浏览器窗口进行操作。

DOM(文档对象类型):DOM把整个页面映射成一个多层节点结构。HTML页面组成都是某种类型的节点,这些节点又包含着不同类型的数据

2、Javascript和HTML5的关系
HTML5是一种新的技术,就目前而言,我们所知的HTML5都是一些标签,但是有了JS之后,这些标签深层的扩展功能才得以实现。
比如video标签,我们对其理解为一个简单的标签,但实际上,video标签还有更深层次的扩展功能。
3、如何编写及运行JS
JS也是一种脚本语言,他可以有两种方式在HTML页面进行引入,一种是外联,一种是内部
外联JS的写法为:
<script src="相对路径"></script> 这是一条html语句,原则上可以放在html页面的任意位置,不用和link标签一样非得放在head部分
相对路径链接的是JavaScript文件,文件的扩展名为.js,如index.js
内部JS的写法为:
<script> //在script标签内写js脚本 </script>错误的写法:
<script src="相对路径"> //在script标签内写js脚本 </script> 向页面中打印内容:
document.write(“这是一些文本内容”); 可以直接解析标签:
document.write(“<strong>加粗的内容</strong>”); 转义字符:
< ==== <
> ==== >
document.write(“<strong>这是一些加粗的内容</strong>”);console.log("hello world")
向浏览器的控制台打印信息,跟document.write()原理类似4、变量的概念及基本运算

他叫汤姆,他是一只猫。
猫由什么组成?猫皮,猫肉,猫爪,比起吃老鼠更愿意玩老鼠的心,每次整老鼠反而被整的笨脑子。
它的主人每次叫它什么?那个批了张猫皮,长着猫肉,有猫爪.....的什么玩意,你过来一下...
不!我们叫它汤姆!这是这只猫的名字!
在计算机中,我们把这只猫塞进一个汤姆的名字内。这个“汤姆”,就是一个变量。
如何创建一个变量?
var tom = “猫”;
var a = “<strong>加粗的内容</strong>”; var是一个关键字,用来声明一个变量;
= 表示赋值(取名字); 声明变量以“=”为区分,左边为变量名(被赋值),右边为存放进变量中的内容(给变量赋值)。
注意:JS中的“=”号,和数学中的“=”不一样,在JS中“=”的作用是赋值(取名字) var 声明变量的底层原理:我们所写的程序运行在内存中,当我们使用关键字var 声明一个变量的时候,计算机会从内存中划分一个空间,为我们存放不用类型的内容做准备。
变量的类型(数据类型)
因为存放在变量中的数据是放在计算机的内存中的,计算机只识别0和1,所以需要对不同类型的数据进行转义,转义的结果会导致所需空间不同,所以JS中分成很多种数据类型,以便计算机储存时使用。
数字类型(number):1234567890
字符类型(string):"123" 'asd' "文字"
"数据"(被单引号或双引号,包裹的部分,引号必须配套使用)
未定义类型(undefined):这是一种特殊类型,当变量被声明,但是没有被赋值的时候,
那么该变量的类型的undefined
布尔值类型(boolean):true,false (真,假)
对象类型(object):{}object
数组类型(array):[]如何区分或得知不同的数据类型:
通过关键字
typeof 变量名 小技巧:声明一串变量时可以这么写,
var a=1,b=2,c=3;(但是不推荐初学者这么用,因为这样的声明方式会导致注释不明确)5、变量命名规则和关键字的介绍
变量的名字 就像 人的名字一样,不能乱起。
你的代码不是只有你一个人看,变量既然是名字,那就这个名字就要有特殊的意义:
举个栗子:翠花,我们能从这个名字中得到什么信息?(这个名字应该是个女的,父母应该希望她长得跟花一样,一个美好的愿景)
小钢炮?
我们能从名字中读出很多含义,是因为我们的语言常识,同样,变量也有一套类似的常识标准,代表了各种含义,如下:

第一个规则:
前缀就能表示出这个变量的类型
第二个规则:
开头必须为字母或者$或者_
那么能不能使用typeof做为变量名呢?想都别想!
第三个规则:
关键字和保留字不能用做变量名。
关键字:
以下这些关键字用于执行特定操作等。按照规则,关键字也是语言保留的,不能用做标识符

保留字:
未来可能做为关键字的存在


alert()方法
alert()方法用来停止浏览器加载代码,并弹出()里面的内容。
浏览器解析代码的顺序(从上到下,从左到右)
6、算术、赋值、关系运算符
JS中的运算符分为:算术/赋值/关系/逻辑/字符串
算术运算符: +加法 -减法 *乘法 /除法 %取余
var a = 1, b = 2;
a + b = 3
a - b = -1
a * b = 2
a / b = 0.5
a % b = 1目测,跟数学中的运算符是一样的。但是:
var a = "1", b = "2";
a * b = 2
a / b = 0.5
a - b = -1
a + b = ??? +号,有两层意思,第一层算数之间的加法;第二层字符串的连接;执行过程中,先检测加号两边的数据类型,如果发现字符型,那就先 生效字符的连接
数据类型转换:强制转换、隐式转换
其实还是有点不一样:和我们概念中的逻辑运算符很多都是不一样的:
比如:
= == === 并且不同数据类型之间的运算得到的结果,可能不是我们意想中的;
有什么差别呢?
赋值运算符:
= += -+ *= /+ %= 
关系运算符:
< <= > >= == != ===
6,变量不同类型之间的自动、手动类型转换
转换成字符型:toString()
var str = 123;
str.toString();//转换成字符串
//将str从数值型变成字符型浮点数:
电脑在运算过程中以正确的二进制浮点进行运算,但是我们输入的都是十进制的数,这两者并不是总是能转化的那么准确,有时候会得到正确的结果,但有时候就没那么幸运。
alert(0.7+0.1);???
alert(0.6+0.2);???var a=3,b="10",
c=true;
alert(a+b);
alert(b+c);
alert(a+c); 运算结果好像并不是我们想要的。
我们想做数学运算的时候,应该先对所有的数据类型进行统一(统一成数字格式),这个时候我们就该用到数据类型的转换。
转换成数值:
parseInt();转换成整数,可以接受两个值
parseFloat();转换成浮点数
两者的不同:
parseInt();该方法从左向右,检测数字或字符串,当第一次发现一个不为数字的字符时,把之前的所有进行返回,如果字符串中第一个就不是数字,那么返回NaN 例如:
parseInt("123abc");a做为第一个不是数字的字符;返回a之前的所有值,则该方法返回123parseInt("abc123");a做为第一个不是数字的字符,且处在字符串的第一位,则判定该字符串无法转换为数字返回NaNparseFloat();该方法检索数字或字符串后面第一个.后的不为数字的字符,并对之前所有的结果进行返回,
如果第一个字符不为数字,那么返回NaN
例如:parseFloat(“123.456");返回123.456
parseFloat(“123.4a56");返回123.4
parseFloat(“123.00");返回123
parseFloat(“123.0a56");返回123 想想为什么?
关于浮点数:
Math.round()四舍五入取整浮点数。
认识NaN
它是一种特殊的Number类型,代表意外转换的数字,NaN和任何东西都不相等,包括它自己。
var num = 123.4567;
num.toFixed(n); 保留n位小数7,逻辑运算
一门计算机语言,编程的核心在于逻辑思想,当我们在编写程序的时候,逻辑是否通顺,是能否写出程序的关键,可以说如果掌握了逻辑,那么你就踏入的计算机编程的大门。
逻辑运算符: && || !

字符串连接运算符: +
8,自增自减运算
++ --a++表示在a原有的基础上增加1
a--表示在a原有的基础上减小1
那么,++a 和 --a 呢?
var a = 1;
alert(a);
var b = 1;
alert(b++);
alert(b);
var c = 1;
alert(++c); 前自增与后自增有本质的区别,他们相同点都是为自身加了1,不同点是
前自增是先加1,再使用操作数的值
后自增是先使用操作数的值,再加1
前自减和后自减同上。
9,NaN的概念和应用
NaN
(not a number:不是一个数字的数值),是一种特殊的Number类型,代表意外转换的数字,NaN和任何东西都不相等。厉害到自己都不等于自己

alert(NaN == NaN);返回false
var a = 0;
var b;
var c = a + b;
alert(c);认识isNaN()函数
该函数判断括号内的值是否是NaN,是就返回true,不是就返回false
alert(isNaN(c));10,Number方法的应用
Number()为强制数据类型转换:
Number("hello world"); //NaN
Number("123456"); //12345611,八进制和十六进制的介绍
我们平时所习惯的不过是一种别人规定好的规则而已,比如iphone的价格,这个是认为规定的,我们知道了,并且已经习惯了,它的贵!
那么这样的习惯其实会有所改变。
比如进制,同样也是一种规则,这种规则是什么样的呢?数数字到9以后,你会想到什么?为什么会是10呢?
9就是10进制的极限了,那么当继续计数的时候,会将9向前进1,然后9归零,这就是10;
那么什么是二进制呢?逢2进1呗,如何用二进制表示3 ?11
什么是八进制呢?如何用八进制表示10 ?12
什么是十六进制呢?如何用十六进制表示25 ?19
理解就够了;
练习
上
1.为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?
2.小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。
它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。
提示:摄氏度与芈氏度的转换公式为:摄氏度 = 5/9.0*(华氏度-32) 保留3位小数。
下
1.计算两个文本框的和
1.计算两个文本框的差
1.计算两个文本框的积
1.计算两个文本框的商
2.var k=10; console.log(k++ + ++k +k +k++);
3.掌握逻辑运算的意义
4.掌握八进制、十六进制的写法
5.掌握NaN的含义
6.掌握Number函数的转换结果
7.计算两个文本框的加减乘除
要求:1.使用parseInt方法类型转换
8.计算结果是用Math.round方法四舍五入
9.计算一个半径为80cm的圆的面积。打印到页面上。