此系列根据学习JavaScript的过程总结
目录
一、JavaScript的定义:
JavaScript ( JS ) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web 页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,例如 Node.js、 Apache CouchDB 和 Adobe Acrobat。JavaScript 是一种基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
二、JavaScript的组成部分:
1.ECMAScript,描述了该语言的语法和基本对象。
2.文档对象模型(DOM),描述处理网页内容的方法和接口。
3.浏览器对象模型(BOM),描述与浏览器6+进行交互的方法和接口。
三、JavaScript运行环境:
1.可以运行在浏览器
2.可以运行在Node.js
四、JavaScript特点:
1.解释性语言:需要解析器解析执行;
2.(1)弱类型语言:变量可以重复声明,动态切换数据类型
(2)强类型语言:变量声明的时候确定数据类型 不可重复声明
3.从上到下按照解析顺序执行代码
4.区分大小写:大小写敏感(html css 不区分大小写 大小写不敏感)
五、注释:
文档 | 符号 |
HTML | <!------> |
CSS | /* */ |
JavaScript | // 单行注释 /* * 多行注释 */ |
LESS | // |
六、JavaScript写在head和body标签中的区别
在body部分中的JavaScript会在页面加载的时候被执行,在head部分中的JavaScript会在被调用的时候才执行。
因为浏览器解析html是从上到下的。如果把JavaScript放在head里的话,则先被解析,但这时候body还没有解析,所以会返回空值。一般都会绑定一个监听,当全部的html文档解析完之后再执行代码
windows.onload = function(){
// 这里放执行的代码
}
这就说明了,如果我们想定义一个全局对象,而这个对象是页面中的某个按钮时,我们必须将其放入body中,道理很明显:如果放入head,那当你定义的时候,那个按钮都没有被加载,可能获得的是一个undefind。一般习惯将JavaScript放在body的最后面,类似last-child。
七、 JavaScript中声明变量:
1.声明变量的方式 var let const
2.标识符/变量名命名规则:
(1)由字母数字下划线$组成
(2)不能以数字开头
(3)不能使用关键字和保留字
(4)建议使用驼峰式命名
3.局部变量全局变量
(1)写在函数内部使用var 声明该变量 function 声明该变量 具有局部作用域
(2)不使用var 声明变量就是全局变量 具有全局作用域
4.var、const、let的区别
var | let | const | |
作用域 | 函数作用域 | 块级作用域 | 块级作用域 |
变量是否可以重复说明 | 可以 | 在同一块级作用域,let变量不能重新声明 | 在同一块级作用域,const常量不能修改(对象的属性和方法,数组的内容可以修改) |
是否存在暂时性死区 | 不存在 | 存在 | 存在 |
是否存在变量提升 | 存在 | 不存在 | 不存在 |
八、关键字、保留字、区分大小写、标识符以及语句
1.关键字:在js中有特殊功能
break do try typeof case else new var catch finally return void continue for switch while debugger this function with default if throw instanceof delete in
2.保留字:将来可能成为关键字
abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger double implements protected volatile import public
3.区分大小写
typeof 关键字, typeOf 非关键字
4.标识符
指变量,函数,属性的名字或者函数的参数。标识符是按照以下规则组合起来的一或多 个字符:
(1)字母,数字,下划线,$组成
(2)只能以字母,下划线,$开头。
(3)不能将关键字作为标识符。命名采用驼峰式命名
5.语句
每个语句以分号结尾,如果省略分号,由解析器确定语句的结尾,即分号可以省略,但 是我们要求每个语句的末尾都应该有分号
九、 数据类型:
1、JavaScript基本数据类型:
(1) 值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空 (Null)、未定义(Undefined)、Symbol。
(2)引用数据类型:对象(Object)、数组(Array)、函数(Function)。
注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
2.JavaScript 拥有动态类型
(1)JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型
var x; // x 为 undefined
var x = 5; // 现在 x 为数字
var x = "John"; // 现在 x 为字符串
(2)字符串 String
字符串是存储字符(比如 "Bill Gates")的变量。
字符串可以是引号中的任意文本。可以使用单引号或双引号:
var carname="Volvo XC60";
var carname='Volvo XC60';
可以在字符串中使用引号,只要不匹配包围字符串的引号即可:
var answer="It's alright";
var answer="He is called 'Johnny'";
var answer='He is called "Johnny"';
可以使用字符字面量,转义字符 \n 换行 \t 制表 \b 退格 \r 回车 \ 斜杠 ' 单引号 " 双 引号 字符长度可通过length属性获取字符长度
var str = "我是字符串";
console.log(str);
console.log(str.length);
var s4='\n\t\b\r';
(3)数字 Number
JavaScript 只有一种数字类型。数字有很多类型,按照数字精度可以分为整数(int), 单精度(float),双精度(double ),按照数字的表示方法可以分为二进制(Binary),八进制(Octal),十进制(decimal system),十六进制(Hexadecimal)。但是在js中,所有的数字统一使用Number来表示。
表示方法:
3.1整数:
十进制 55 由0~9组成
八进制 070 首位为0,其他位有0~7组成
十六进制 0x11 首位为0x,其他位为0~9,A~F
var num1 = 34; //不使用小数点来写
var num2 = 010; //8
var num3 = 0x10; //16
console.log(x1, x2, x3, x4);
3.2浮点数:
所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后必须至少有一位 数字。浮点数值的最高精度是17位小数
普通浮点数 3.1415926
科学计数法 3.125e7 即31250000
var f1 = 3.1415926; //3.1415926
var f2 = 3.125e7; //31250000
console.log(f1, f2);
3.3非数值:
该数值表示一个本来要返回数值的操作数未返回数据的情况
var a = 10/ "a"; // a为NaN
3.4非数值检测:
判断参数是否“不是数值”,当参数para不是数值的时候返回true
isNaN(NaN); // true
数值范围:
(1) 由于内存的限制,ECMAScript不能保存世界上所有的数值。
(2)ECMAScript能表示的最小数值保存在Number.MIN_VALUE中
(3)能表示的最大的数值保存在Number.MAX_VALUE中。
(4)如果某次计算的结果超过了JavaScript数值范围,将会返回Infinity(正无穷)或 者-Infinity(负无穷)
var a = 9/0; // Infinity
Number.MIN_VALUE 5e-324
Number.MAX_VALUE 1.7976931348623157e+308
3.5数值范围检测:
使用 isFinite()函数可以判断参数是否在最大值和最小值之间,如果在,返回 true
var a = isFinite(9/0); // false
3.6布尔 Boolean
布尔(逻辑)只能有两个值:true 或 false。
var x=true;
var y=false;
3.7Null
该类型的取值只有一个,即null。null可以表示一个空对象的指针。
var a = null;
如果一个变量准备将来保存对象,可以将该变量初始化null而不是其他,这样可以通过检查null值就可以知道相应的变量是否已经保存了 一个对象的引用。
3.8Undefined
Undefined 这个值表示变量不含有值。未定义的。
var a;
console.log(a,typeof a);//undefined 'undefined'
var a = undefined;
console.log(a,typeof a);//undefined 'undefined'
3.9undefined 与null关系
(1)undefined继承null,所以undefined == null结果为true,但是null表示空对象,undefined表示未定义;
(2)null与undefined用途不同,null可以用来表示一个空对象,但是没有必要把一个变量的值显式设置为undefined。
//null vs undefined
console.log(undefined == null); //true //undefined派生自null
console.log(undefined === null);//false
if(null == undefined){console.log('相等的')}
if(null === undefined){console.log('完全相等')}
// ==, 等同 的意思, 两边值类型不同的时候,要先进行类型转换为同一类型后,再比较值是否相等。
// ===,恒等 的意思, 不做类型转换,类型不同的结果一定不等。
// "=="表示只要值相等即可为真,而"==="则要求不仅值相等,而且也要求类型相同。
// 建议:尽量使用严格运算符 ===。因为"=="不严谨,可能会带来一些违反直觉的后果。