js学习笔记----Day01历史和运算符

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 对象

语法




  • script常规位置:
    1. script标签可以写在body开始标签和结束标签中, 并且script标签建议写在body结束标签之上(推荐位置)

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 表示变量类型

  • 注意点

  • 变量不能以数字开头,尽量少用下划线,容易跟系统的变量混淆

  • 变量的命名是区分大小写的

  • 同一个作用域的变量名不能重复

  • 不能使用关键字或者保留字进行命名

js_word.png
js_word1.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

运算符的优先级

运算符优先级.jpeg
//表达式: 由 数字, 变量, 运算符组成的一个式子
//优先级: 运算符执行顺序是由优先级决定的, 优先级高的先执行
//结合性: 运算符同优先级情况下, 结合性决定运算符的执行顺序, 是从左往右,还是从右往左运算
//左结合: 从左往右
//右结合: 从右往左运算

(一) 算术运算符

自加自减在表达式中结果
  • 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
  • ++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

注意(易错点):

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
    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

(二) 赋值运算符

  • 不能在声明变量的时候使用复合赋值运算符

//下面示例是错的

var a += 1;

//NAN: not a number 非数值类型

// typeof undefined

(三) 关系运算符

  • 目前所学除了===, 其他都是只比较值,不比较类型

  • 全等=== 值和类型都相等

  • 不等!= 只比较值,不比较类型

(四) 逻辑运算符

  • 要求两边都是boolean值, 除了非!

  • && 逻辑与 有假则为假

  • || 逻辑或 有真则为真

  • !

  • 三目运算符

特殊性
  • 非0即真

1. 与运算符特殊性
结论:

  • && 两边有一边不是布尔, 会先将非布尔值转换为布尔值
  • 若左边值为真, 返回右边的值
  • 若左边值为假, 返回左边的值

2. 或运算特殊性
结论:

  • || 两边有一边不是布尔, 会先将非布尔值转换为布尔值
  • 若左边值为真, 返回左边的值
  • 若左边值为假, 返回右边的值
    3. 非运算符!
    结论:
  • 先将非boolean值转换成boolean类型, 然后返回取反后的布尔值.

逻辑与或非, 有特殊性的时候, 不要管优先级.

隐式转换

1. 数字和字符串相加减时

  • 加号+时, 都转换成字符串(只有+时是转换成字符串, 其他都是转换成数字)

  • 减号-时, 都转换成数字

2. * / % 都是转换成数字

你可能感兴趣的:(js学习笔记----Day01历史和运算符)