JavaScript
JavaScript历史
-
1992 Nombas公司开发出, C minus minus , 用于CEnvi IDE.
-
(建议用IE10)
2. Netscape 开发livescript, 用于Netscape Navigate浏览器
3. 微软jscript
- ECMAScript是Javascript标准 版本ES5 ES6
JavaScript组成
1. ECMAScript
2. DOM 文档对象模型
-
是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。
-
DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点。
3. BOM 描述了与浏览器进行交互的方法和接口
-
弹出新的浏览器窗口
-
移动、关闭浏览器窗口以及调整窗口大小
-
提供 Web 浏览器详细信息的定位对象
-
提供用户屏幕分辨率详细信息的屏幕对象
-
对 cookie 的支持
-
IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX 对象
语法
<style type="text/css">
</style>
<script type="text/javascript">
</script>
- script常规位置:
1. script标签可以写在body开始标签和结束标签中, 并且script标签建议写在body结束标签之上(推荐位置)
</pre>
2. head里
- 查看输出结果
1. 警示框:alert();
2. 控制台输出:console.log();
console.warning('1');
console.error('1');
js注释
-
单行注释
-
多行注释 ctrl + shift + /
注意点:
1. 一定要全部选中
2. 不能嵌套
- 作用: 提高代码的可读性. 方便程序员之间交流. 并且不参与程序编译和执行
变量
-
变量的声明 var -> variable
-
赋值符 =
//变量的声明
var name;
//2\. 变量的赋值
name = "Tim";
var name = "Tim";
- 每句末尾要加上分号;
若不写, 项目上线前需要代码进行打包(压缩), 比如会把换行, 分号去掉. 若不写;会出现压缩问题
变量
-
变量命名: 只可用英文大小写字母 _ $
-
变量命名规范
1. 驼峰命名法 大驼峰 小驼峰
2. 匈牙利命名法: 加上小写字符 sName iName 表示变量类型
-
注意点
-
变量不能以数字开头,尽量少用下划线,容易跟系统的变量混淆
-
变量的命名是区分大小写的
-
同一个作用域的变量名不能重复
-
不能使用关键字或者保留字进行命名
![](https://img.haomeiwen.com/i3522773/b19af71314116ff1.png)
![](https://img.haomeiwen.com/i3522773/fce881690b5fbf65.png)
js是弱语法的语言
会报警告,但是不会编译不通过
console.log(name);
=>
//Emmet快捷键
name.log + Tab或者Enter
//查看变量类型
console.log(typeof name);
=>
typeof name.log
若无赋值得出undefined
- 科学计数法
2.34e-4 = 2.34 * (0.1)^4
- 变量类型: string number null boolean object undefined
运算符的优先级
![](https://img.haomeiwen.com/i3522773/def3eb2b6fb306c9.jpeg)
//表达式: 由 数字, 变量, 运算符组成的一个式子
//优先级: 运算符执行顺序是由优先级决定的, 优先级高的先执行
//结合性: 运算符同优先级情况下, 结合性决定运算符的执行顺序, 是从左往右,还是从右往左运算
//左结合: 从左往右
//右结合: 从右往左运算</pre>
(一) 算术运算符
自加自减在表达式中结果
- a++形式会先赋值, 后加减
var a = 3;
var b = 5;
var c = a++ + b++; // 3 + 5
console.log(a); //4
console.log(b); //6
console.log(c); // 3 + 5 = 8</pre>
- ++a形式会先加减,后赋值
var a = 3; // 4
var b = 5; // 6
var c = ++a + ++b; // 4 + 6
console.log(a); // 4
console.log(b); // 6
console.log(c); // c = 4 + 6 = 10</pre>
注意(易错点):
var d = 2;
// 优先级问题, 先自增后相加赋值给f
var f = d++ + d++ + d++; // 2 + 3 + 4
console.log(d); //5
console.log(f); // */
//f 的值: 2 + 3 + 4 = 9
//d 变量的值 : 3 4 5</pre>
var d = 2;
var f = (++d) + (++d) + (++d); // 3 + 4 + 5
console.log(d); //5
console.log(f); // 12
//f 的值: 3 + 4 + 5 = 12
//d 变量的值 : 3 4 5</pre>
(二) 赋值运算符
- 不能在声明变量的时候使用复合赋值运算符
//下面示例是错的
var a += 1;
//NAN: not a number 非数值类型
// typeof undefined
(三) 关系运算符
-
目前所学除了===, 其他都是只比较值,不比较类型
-
全等=== 值和类型都相等
-
不等!= 只比较值,不比较类型
(四) 逻辑运算符
-
要求两边都是boolean值, 除了非!
-
&& 逻辑与 有假则为假
-
|| 逻辑或 有真则为真
-
!
-
三目运算符
特殊性
- 非0即真
1. 与运算符特殊性
结论:
- && 两边有一边不是布尔, 会先将非布尔值转换为布尔值
- 若左边值为真, 返回右边的值
- 若左边值为假, 返回左边的值</pre>
2. 或运算特殊性
结论:
- || 两边有一边不是布尔, 会先将非布尔值转换为布尔值
- 若左边值为真, 返回左边的值
- 若左边值为假, 返回右边的值
3. 非运算符!
结论: - 先将非boolean值转换成boolean类型, 然后返回取反后的布尔值.
逻辑与或非, 有特殊性的时候, 不要管优先级.</pre>
隐式转换
1. 数字和字符串相加减时
-
加号+时, 都转换成字符串(只有+时是转换成字符串, 其他都是转换成数字)
-
减号-时, 都转换成数字
2. * / % 都是转换成数字
网友评论