js的历史
Nombas与ScriptEase
大概在 1992 年,一家称作 Nombas 的公司开发了一种叫做 C 减减(C-minus-minus,简称 Cmm)的嵌入式脚本语言,并将这个脚本语言捆绑在一个可以嵌入到浏览的2的共享软件中,代表了第一个在万维网上使用的客户端语言。后来由于mm听起来比较消极,Nombas又将Cmm的名字修改为ScriptEase.虽然Nombas如今在互联网行业已经销声匿迹,但是它的理念却成为因特网的一块重要基石。
Netscape与JavaScript
当网上冲浪越来越流行时,对于开发客户端脚本的需求也逐渐增大。那时,大部分因特网用户还仅仅通过 28.8 kbit/s 的调制解调器连接到网络,即便这时网页已经不断地变得更大和更复杂。而更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器进行多次地往返交互。设想一下,用户填完一个表单,点击提交按钮,等待了 30 秒的处理后,看到的却是一条告诉你忘记填写一个必要的字段。
为了解决这一问题,NetScape公司的 Brendan Eich 开始为即将在1995年发行的 Netscape Navigator 2.0浏览器开发一款名为LiveScript的脚本语言,最终NetScript与Sun公司合作完成了LiveScript,并且将这种语言命名为JavaScript.
微软与JScript
在JavaScript 1.1 版本发布时,微软公司也决定进军浏览器行业。微软公司在推出的IE 3.0上搭载了一个JavaScript的克隆版,并且命名为JScript.
ECMAScript
在微软进入后,有 3 种不同的 JavaScript 版本同时存在:Netscape Navigator 3.0 中的 JavaScript、IE 中的 JScript 以及 CEnvi 中的 ScriptEase.和其他编译语言不同的是,JavaScript 并没有一个标准来统一其语法或特性,而这 3 种不同的版本恰恰突出了这个问题。
1997 年,JavaScript 1.1 作为一个草案提交给欧洲计算机制造商协会(ECMA).ECMA指派由来自 Netscape、Sun、微软、Borland 和其他一些对脚本编程感兴趣的公司的程序员组成的第 39 技术委员会(TC39) 锤炼出了 ECMA-262,该标准定义了名为 ECMAScript 的全新脚本语言。
总结:Javascript是ECMAscript的一个实现 并且在此基础上扩展了DOM和BOM
js的组成
ECMAscript: JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标准与具体实现无关
DOM:(document object model 文档对象模型)一套操作页面元素的API
BOM:(browser object model 浏览器对象模型)一套操作浏览器功能的API
javascript是什么
javascript是在运行在客户端的脚本语言
客户端:客户端是相对于服务器而言的,在这里先简单理解为浏览器 浏览器就是一个客户端软件,浏览器从服务器上将资源(html,css,js,图片等)请求下来 并且在本地利用浏览器去解析这些资源 服务器本质上也是一台电脑。用来接收客户端发过来的请求,并处理请求。同时存储数据 读取数据等操作
脚本语言:不需要编译 读取一句 解析一句 一句报错 下一句不会继续执行 执行过程:源代码 - 预解析 - 运行 编译语言:需要编译 编译一旦出错 整个程序都不会运行 执行过程:源代码 - 编译后的字节码文件 - 运行
javascript的作用
1、网页特效 2、表单验证 3、服务端的JS (node.js) 4、命令行工具 (node.js) 5、app 6、游戏开发
总结:JS无所不能,我们学习的方向主要针对的是web页面
变量
概念:一块被命名的运行存储空间
运行存储空间:电脑应用程序在运行的时候开辟的内存空间
为什么要命名:方便程序员使用
使用
1.先声明后赋值 var a; a=1;
2.声明并赋值 var a=1;
3.一次声明多个,单独赋值 var a,b,c; a=1; b=2; c=3;
4.不声明直接赋值,属于不遵守使用规范,但不会报错,坚决不推荐;
5.不声明直接使用,会报语法错误。
规则: 只能为字母、数字、下划线和$符号组成,且不能以数字开头;
规范
1.变量名必须有意义
2.遵守驼峰式命名法 首字母小写,后面单词首字母大写 例如:userName userPassword
注意
1.不能使用关键字和保留字命名
关键字:对于JS来说有特殊意义的字符 [查询保留字和关键字]https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords
保留字:现在没有意义 但是保留在那边 以后可能会有意义的字符
交换变量值
1.借助第三个容器临时保存
2.运算(了解即可 基本不用)
var a = 10;
var b = 20;
a = a + b;
b = a - b;
a = a - b;
注释
1、单行注释
// 用在代码上
2、多行注释
/* 多行注释
*内容
*内容
*/ 用在说明文档上
输出语法
1.调用弹出框功能alert('Hello world');
2.调用对话框功能prompt('请输入你的名字');
3. 确认框confirm('Are you sure?');
4. 向页面输入对应的值document.write('欢迎光临');
5. 向控制台输出日志console.log('我是出现在控制台 ,一般用于后期调试代码');
数据类型
基本数据类型
Number:数字类型
转换为数字类型:
1.parseInt();将可以转化的其他类型的数据的小数点前的转化为数字(整数),如果内部包含其他字符,则转化第一个非数字类型字符前的数字。
2.parseFloat();将可以转化的其他类型的数据转化为数字(小数),如果内部包含其他字符,则转化第一个非数字类型字符前的数字。
3.Number();转化之前要先扫描一下当前的数据,如果包含不是数字类型的字符,则转化结果为NaN。如果全是数字类型的字符,则转化为整数
4.黑科技(隐式转换):在数据前添加一个“+”
String:字符串类型
转化为字符串
1.数据.toString();nunll和undefined不能转化
2.String(数据);
null转化结果为null
undefined转化结果为undefined
3.数据+“ ”;
一个字符串和任何一个数据相加,其结果都是字符串
null:空值,赋值给变量可用于清空该变量
undefined:只声明而未赋值的变量,默认值为undefined
boolean:布尔类型
转化为布尔类型
转化为false的值有:0 null undefined “ ” false 不等价的表达式 NaN
为什么要进行数据类型转换
不同的数据类型的数据在进行运算时,产生的结果也不一样,为了方便数据的运算,必要的时候要进行数据转换。
复杂数据类型
object
array:数组
function:函数
算术运算符
1.加、减、乘、除、取模
2.加号口诀:数值相加 字符相连
网友评论