JavaScript ( ECMAScript )是一个脚本语言。它是一个轻量级,但功能强大的编程语言。

浏览器组成

渲染引擎 :用来解析 HTML 与 CSS,俗称内核。

JS 引擎 :JS 解释器,用来读取网页中的 JavaScript 代码,对代码处理后运行。

浏览器本身不会执行 JS 代码,而是通过内置的 JS 解释器来执行 JS 代码。JS 引擎执行代码时,逐行解释每一句源码,然后由计算机去执行,所以 JavaScript 语言归为脚本语言,会逐行解释执行。

JavaScript 书写规范

1、文件编码统一为 utf-8, 书写过程过,每行代码结束必须有分号;

2、JavaScript 严格区分大小写,书写时请注意

3、库引入:原则上仅引入 jQuery 库,若需引入第三方库,须与团队其他人员讨论决定;

4、变量命名:驼峰式命名。要求变量集中声明,避免全局变量

  • 原生 JavaScript 变量要求是纯英文字母,首字母须小写,如 iJavaScript;

  • jQuery 变量要求首字符为’_’, 其他与原生 JavaScript 规则相同,如: _iJaveScript;

5、类命名:首字母大写,驼峰式命名。如 IJaveScript;

6、函数命名:首字母小写驼峰式命名。如 iJaveScript ();

7、命名语义化,尽可能利用英文单词或其缩写;

8、尽量避免使用存在兼容性及消耗资源的方法或属性,比如 eval () & innerText;

9、后期优化中,JavaScript 非注释类中文字符须转换成 unicode 编码使用,以避免编码错误时乱码显示;

10、注重与 html 分离,减小 reflow, 注重浏览器性能。

JavaScript 脚本执行顺序

第一步定义: 分为变量定义和函数定义

第二步执行: 先从上往下定义完所有的内容后,会从上往下执行;除了变量和函数定义外的其他内容都会执行;如:赋值、函数调用

第三步查找:能在栈里面找到的,就不去堆里面找,因为栈空间小,就近原则会在栈里面开辟,就能找到堆里面的地址

JavaScript显示数据

JavaScript 可以通过不同的方式来输出数据:

  • 使用 alert() 弹出警告框
  • 使用 console.log() 写入到浏览器的控制台
  • 使用 prompt() 弹出可输入的对话框
  • 使用 document.write() 方法将内容输出到到 HTML 文档页面中
    • 绝对不要在文档 (DOM) 加载完成之后使用 document.write(),这会覆盖该文档
  • 使用 .innerHTML 写入到 HTML 元素

数据类型和变量

数据类型

Type Desc
number 数字,不区分整数和浮点数;以 64 位浮点型数据(float)来存储;NaN(Not a Number);Infinity(∞)
string 字符串是以单引号'或双引号"括起来的任意文本
boolean 一个布尔值只有truefalse两种值
null null 表示一个"空"的值,它和0以及空字符串''不同,0是一个数值,''表示长度为0的字符串
undefine 未定义,如果一个变量没有初始化值,则默认复制为 undefine
object 对象,JavaScript的对象是一组由键-值对组成的无序集合;对象变量.属性名 获取对象属性
逻辑运算符 与运算:&&;或运算:||;非运算:!
比较运算符 ==比较,会自动转换数据类型再比较;===比较,不会自动转换数据类型,如果数据类型不一致返回false,再比较
strict 模式 在 strict 模式下运行的JavaScript代码,强制通过 var申明变量,未使用var申明变量就使用的,将导致运行错误。启用strict模式的方法是在JavaScript代码的第一行写上:'use strict'

变量

变量名是大小写英文、数字、$_的组合,且不能用数字开头;使用等号=对变量进行赋值;变量只能用var申明一次。

var age = 10;

  • var 是一个关键字,用来声明变量。使用该关键字声明变量后,计算机会自动为变量分配内存空间
  • age 自定义的变量名,通过该变量名来访问该内存中分配的空间
  • 变量值是保存到变量空间里面的值

数据类型转换

检测变量数据类型:console.log(typeof var_value)

typeof Desc typeof Desc
number 如果变量是Number类型的 boolean 如果变量是Boolean类型的
string 如果变量是String类型的 object 如果变量是引用类型或null类型的
undefined 如果变量是undefined类型的

数据类型间的转换方法:

Method Desc Method Desc
number.toString() 转成字符串 parseInt(string) 将string类型转换成整数
String(number) 强制转换,转成字符串 parseFloat(string) 将string类型转换成浮点数
加号拼接字符串 和字符串拼接的结果都是字符串 Number(string) 将string类型转换为数值型

运算符

Type List Desc
一元运算符 ++,- -,+(正号) ++(- -)在前,先自增(减),再运算;++(- -)在后,先运算,再自增(减)
算术运算符 +,-,*,/,% %,求模运算
赋值运算符 =,+=,-= 和数学运算符逻辑相同
比较运算符 >,<,>=,<=,==,===(全等) 类型相同,直接比较;不同,先进行类型转换,然后比较;
=== 全等于 比较前先校验类型,类型不一样,直接返回 false
逻辑运算符 &&,||,! && / || 短路;number : 0或NaN为假;string : 空字符串” “为假;
null & undefine : 都是 false;对象 : 所有对象都为 true
三元运算符 表达式 ? true : false var c = a > b ? 1 : 0;

流程控制语句

Type Detail Desc
if … else … if () { … } else if () { … } else { … }
switch switch (){ case x1: … case x2: … } 可以接受任意的原始数据类型
while while () { … } 只有一个判断条件,条件满足,就不断循环
do … while do { … } while (); 在每次循环完成的时候判断条件
for for(var i=1; i<=100; i++){ … } 已知循环的初始和结束条件时非常有用