Javascript的历史
1995年 5月 网景公司 布兰登·艾奇 用10天 Macha
9月 改名 LiveScript
12月 javascript
java 和 javascript 没有关系 雷锋和雷峰塔
解决表单提交验证
ie: JScript
1997年, 欧洲计算机制造商协会(ECMA) 以JavaScript1.1为蓝本 定义了语法规范 ECMAScript
javascript和ECMAScript的关系
前者(javascript)是后者的体现
后者(ECMAScript)是前者的语法标准
js的组成部分:
ECMAScript 语法标准
DOM: Document Object Modal 文档对象模型
BOM: Browser Object Modal 浏览器对象模型
概念
js: 是基于对象和事件驱动的解释性脚本语言;
特点:
基于对象: 一切皆对象, 可以使用自己创建出来对象
事件驱动: 以事件作为驱动
解释性: 相对编译性来说, 不需要打包编译,直接在浏览器中就可以执行
跨平台: 只要浏览器支持js, 就能执行js, 跟电脑系统没有关系
相对安全: 同源策略限制
引入方式
行内
行内: 基于事件引入 写在起始标签上的 οnclick="alert('Hello World;')"
<div onclick="alert('Hello World;')">这是一个div</div>
内嵌
内嵌: script双标签 可以写在页面的任何位置 body的结束标签之前 学习过程
<script>
alert(1);
</script>
外链
外链: script双标签 src引入js的文件 body的结束标签之前 工作
js文件: 创建后缀为 .js
注意: 外链js文件的script中不能写内嵌代码
<script src="./03.js">
// 不会执行
alert(6);
</script>
<!-- 再写一个script 写内嵌 -->
<script>
alert(7);
</script>
注释
块注释: /* 注释 */ ctrl+shift+/
行注释: // 注释 ctrl+/
键盘快捷方式:
首选项 ---> 键盘快捷方式 ---> 搜索: comment ---> 修改
调试
调试: 程序员用来验证代码是否正确
调试方式: 输出 断点
输出调试:
-
alert: 警告框
alert('内容')
数字和变量可以不加引号 其他的都要加
-
prompt: 带有输入框的对话框 可以与用户做交互
prompt('提示内容', '默认值'); 默认值: 可写可不写
具有返回值, 可以接受
确定: 输入框中的内容 取消: null
-
输出在页面: document.write(...data);
...data: 可以一次性写多个数据, 用,分隔
只适合在页面加载过程中使用 如果在页面加载完成后使用 全页面内容都会被覆盖(函数)
可以识别标签 不覆盖自己添加的内容
-
输出在控制台: console.log(...data);
...data: 可以一次性写多个数据, 用,分隔
检查-->Console
// alert(1); // alert(prompt('请输入你的姓名')); document.write('<a>这是一个a标签</a>', '<i>这是一个i标签</i>'); document.write('<b>BBBBBB</b>'); console.log(123, 345, 567);
断点调试
断点调试: 浏览器右键 --> source ---> 打开要调试的文件 ---> 行数前点一下 (蓝色箭头、红色圆点) ---> 刷新 --> 点击三角箭头
变量
变量: 用来存储数据的容器;
声明变量: var声明
声明方式
-
先声明 后赋值
var 变量名;
变量名 = 值;
var a; a = 10; console.log(a);
-
声明的同时赋值:
var 变量名 = 值;
var b = 20; console.log(b);
-
多个声明:
var 变量名1 = 值1, 变量名2 = 值2, ..., 变量名n = 值n;
js中 , 分隔 ;一句代码的结束
var c = 30, d = 40; console.log(c, d); // 30 40
-
连等声明
var 变量名1 = 变量名2 = 值;
var m = n = 50; console.log(m, n);
命名规范
1. 以数字、字母、_、$组成, 数字不开头
2. 不能是关键字和保留字 var let const for break continue top(浏览器中存储window对象)
3. 不能重复, 如果重复后面的就会覆盖前面的
4. 遵循驼峰命名法 多个单词组成一个变量的时候 第二个往后的单词的首字母需要大写
5. 具有语义化 userName user login password loginPass
特殊声明
1. 只声明 不赋值 变量值为undefined
2. 不用var 全局变量 不遵循垃圾回收机制
3. 不用var 也不赋值 报错: is not defined
/*
1. 只声明 不赋值 变量值为undefined
*/
var a;
console.log(a);
/*
2. 不用var 全局变量 不遵循垃圾回收机制
*/
b = 30;
console.log(b);
/*
3. 不用var 也不赋值 报错: is not defined
*/
console.log(c);