基础语法
1.注释://注释内容
多行注释/*
*
*
*
*/
2.语句
JS中用分号结尾,每条语句独占一行。不填分号也能够,也不会报错,可是代码压缩的时候可能会有问题,建议添加分号。
注:JS是逐层解析,如有一层出错,则后面的内容都不会进行解析。
3.标识符
含义:表示某一个实体的符号。也就是本身起一个名字,这个名字能够用来做为变量名,函数名,对象名等。
2.标识符分类
(1)硬性要求(必需要达成):
——能够是由数字,字母,下划线和美圆符号组成,不容许包含其余特殊符号
——不能以数字开头
——禁止使用JS中关键词和保留字来命名
——严格区分大小写
(2)软性要求(能够选择不用):
望文知意(看到标识符就知道意思)
3.命名方法:
(1)匈牙利命名法:
匈牙利命名法是微软公司下面觉得匈牙利籍的程序员所发明的命名法则,其特色是标识符的名字以一个或者多个小写字母开头,表示了该变量的数据类型。
Array 数组 a
Boolean 布尔 f
Float 浮点 f
Function fn
Interger(int) 整形 o
Regular Expression 对象 re
String 正则 s
String 字符串 s
前缀以后是一个单词或多个单词的组合,该单词代表变量用途。
例:a_array҅ o_object҅ i_userAge҅ b_isPassed
(2)驼峰命名法
驼峰命名法实际上分为两种,一种是大驼峰,另一种是小驼峰。
大驼峰又被称之为帕斯卡命名法,就是每一-个单词都是首字母大写
例如: UserName
小驼峰和大驼峰的区别在于,小驼峰的第一个单词的首字母是小写,后面单词的首字母是大写
例如: userName
(3)蛇形命名法
这种命名法常见于Linux内核,C+ +标准库,Boost以及Ruby, Rust等语言蛇形命名法的特色在于单词与单词之间使用下划线进行分隔例如: <br>user_ name, my_ first_ name
4.关键字和保留字
区别:
(1)关键字:可用于表示控制语句的开始或结束,或者用于执行特定操做等。按规定,关键字是语言自己所保留的,不能用做标识符。
(2)保留字:有可能在未来被看成关键字,目前没有特定的用途。
保留字和关键字以下:
abstract、await、 boolean、 break、 byte、 case、catch、 char、 class、 const, continue、debugger、default、 delete、 do、double、 else、 enum、export、 extends、 false、 final、finally、float、 for、 function、 goto、 if、 implements、 import、 in、instanceof、 int、interface、let、 long、 native、 new、 null、 package、 private、 protected、 public、 return、short、static、 super、 switch、 synchronized、 this、 throw、 throws、 transient、 true、 try、typeof、var、 volatile、 void、 while、 with、 yield
5.数据类型介绍
在JS中,数据类型总体上能够分两类:简单数据类型和复杂数据类型
(1)简单数据类型:
string҅,symbol҅,number҅,boolean҅,undefined҅,null
其中symbol类型实在ES6里面新添加的基本数据类型
(2)复杂数据类型:
object
包括JS中的数组,正则等,其类型都是object类型
6.查看数据类型
在JS中咱们能够经过typeof的运算符来查看一个数据的类型
例:console.log(typeof 10);//number
变量
接下来要探讨的是对于任何编程语言都是很是重要的东西,变量。他是用于应用内存中存储的一个值。
1.声明变量
在JavaScript中声明变量的方式有3种: var ,let ,const 。其中var如今已经不推荐使用了,由于会有变量提高等问题。(后面咱们会具体来探讨此问题)
const和let的区别在于,const 所声明的变量若是是简单数据类型,那么是不可以再改变的。而let所声明的变量不管是简单数据类型仍是复杂数据类型,在后面是能够改变的。
例:
const声明变量:
const name = 'Bill';name = 'Lucy';
let声明变量:
let name = 'Bill';
name = 'Lucy';
console.log(name);
2.变量赋值和初始化
用“=”给一个变量赋值,给变量第一次复制的过程,叫作变量的初始化。以便咱们在声明变量的时候就会将变量给初始化,
例:
let a = 3;
也能够写多个,例:
let x = 3,y = 4,z = 5;
若没有赋值,泽莫哦人为undefined
3. 使用var声明变量
在JS中声明变量的方式有3种: var,let,const。其中var如今已经不推荐使用了。由于使用var来声明变量会伴随着一些问题。
固然,这些问题也常常被看做是JS的一些特色,例如重复声明和遗漏声明。
(1)重复声明
若是是使用var关键字来声明的变量,那么是容许重复声明的。只不过这个时候会忽略这次声明。若是从新声明而且带有赋值,则至关因而从新赋值
重复声明不带有賦值操做,JS引擎会自动忽略后面的变量声明
var test = 3;var test;
console. log(test);//3
从新声明时若是带有赋值操做,那么会进行一一个数据的覆盖
var test = 3;var test = 5;
console. log(test);//5
注:在严格模式中,使用let或const会报错
(2)遗漏声明
若是读取一个没有声明的变量的值,JS会报错,
JS容许遗漏声明,直接对变量赋值无需先声明,赋值操做会自动声明该变量:
{
a = 5;
console.log(a);//5
}
console.log(a);//5
4.做用域
含义:变量在程序中跟那个被访问到的区域。
这里先介绍两种:
(1)全局做用域
这是JS一进来就处于运行的环境,全局做用域中所声明变量成为全局变量。全局变量的特色在于变量在任何地方都能被访问
(2)局部做用域
在JS中,{}就能够产生一个局部做用域,局部做用域的变量称之为局部变量,只有局部内的被访问到,外部没法访问,但内部能够访问到外部。
<br>注:{}中var声明的变量不是局部变量,而是全局变量,这也是var最先使用遗留的问题。
<br>注2:若是局部做用域内,变量名和全局做用域变量名冲突,优先使用局部做用于中的变量。
##数据类型##
含义:所谓数据类型,就是数据不一样的种类。在JS中,存在六种简单数据类型和一种复杂数据类型。
简单数据类型:
1.undefined类型
他只有一个值,undefined,使用变量但没有为其赋值时,这个变量就是undefined。
注:没有声明变量,使用时会报错,不是undefined,但打印类型的时候现实的就是undefined
2.null类型
unll也只有一个值,unll。它表示一个空对象。这也正是用typeo操做符检测null值时会返回object的缘由。
3.布尔类型
布尔类型也被称为boolean类型,就是真和假两个值:true和false。
例:
let i = true;
console.log(i);//true
console.log(typeof i);//boolean
注:这两个值与数字值不是一回事,所以true不必定等于1;而false不必定为0.
注2:boolean类型的true和false区分大小写,大写不为布尔值
注3:如下九个均对应布尔类型的假值
"" 双引号的空字符串
'' 单引号的空字符串
`` 空字符串模板
0 数字0
-0 JS中-0和0为不一样的值
NaN
false
null
undefined
4.数字类型
number能够分为两类:
(1)整数:
能够分为正整数和负整数。
须要注意一点进制问题:二进制以0b开头,八进制以0开头(或0o,ES6中新增),十六进制以0x开头
例:
二进制
let a = 0b101;//5
八进制
let b = 017;//15
十进制
let c = 21;//21
十六进制
let d = 0xFD;//253
console.log(a,b,c,d);
注:无论参与运算的变量的值是什么进制,计算结果依旧是十进制。
(2)实数:
就是咱们日常所见的小数,或者成为浮点数。在JS中,表示浮点数的方式有两种:小数型和科学计数法型
例:
let a = 3.14;
let b = 9.12e+2;
console.log(a,b);//结果的值:3.14 912
(3)数值范围(拓展):
由于内存限制,JS并不能保存全部的数值。在JS中可以表示的最小数值在绝大多数浏览器中中为5e-324,而最大值为1.7976931348623157e+308。
<br>经过Number.MIN_VALUE和Number.MAX_VALUE咱们能够查看到JS中支持的最大值和最小值。
注:若是某次计算结果超出了ECMAScript的数值范围,那么证书会被转化为infinlty(正无穷),附属会被转换为-infinlty(负无穷)
注2:若是某次计算反悔了infinlty值,那个这个值没法参与下一次计算,由于infinlty不能参与计算
(4)NaN:
全称Not a Number,非数值,这个数值用于表示原本要返回数值的操做数未返回的状况(这样就不会抛出错误)。
特色:
——任何涉及NaN的操做都会返回NaN
——NaN和任何值都不相等,包括它自身!
(5)数值转换
在JS中,有三个函数能够将非数值的数据转化为数值:
——Number():
能够将非数值转化为数值
注1:若是boolean值,true和false将分别被转化为1和0
注2:若是是数字,就是简单的传入和返回
注3:若是是null值,那么返回0
注4:若是是undefined,那么返回NaN
例:
console.log(Number(true));//1
console.log(Number(false));//0
console.log(Number(10));//10
console.log(Number(null));//0
console.log(Number(undefined));//NaN、
——parseInt():
能够将非数值转化为数值
相比number(),它个多看是否有数字,有的话就会将它转化为数值,且只会取整数
——parseFloat():
能够将非数值转化为数值
相比number(),它个多看是否有数字,有的话就会将它转化为数值,且能够取值到小数点后两位
(6)实例方法(拓展)
含义:必需要实例化多想,而后再对像上面调用。这也涉及到后面对象的知识,如今只须要知道要先有一个数,而后在这个数上面到用相应的方法。
toExponentlal()方法按照指定的小数位数返回数值四舍五入后的字符串表示(经常使用于处理货币值)
let num = 10.456;
console.log(num.toFixed(2));//10.46
console.log(num.toFixed());//10
console.log(num.toFixed(0));//10
console.log(num.toFixed(undefined));//10
console.log(num.toFixed(-1));//会报错
注:toExponentlal()返回数值四舍五入后的指数表示法(e表示法)的字符串表示,参数表示转换后的小数位数
(7)静态方法
<br>含义:这里的静态方法,主要涉及到了面向对象里面的知识,这里简单理解,就是经过该类型可以直接调用的方法。
下面介绍两个Number类型的静态方法:
Number.isInteger():用来判断一个值是否为整数。
注:在JS内,整数和浮点数是相同的存储方法,因此3和3.0被认为同一个值:
console.log(Number.isInteger(25));//true
console.log(Number.isInteger(25.0));//true
console.log(Number.isInteger(25.1));//false
console.log(Number.isInteger("15"));//false
console.log(Number.isInteger(true));//false
Number.isFinite():若是一个值是字符串、布尔类型、Infinity、-Infinity、NaN等(不是数字的时候),就返回false,若是是数字的话就返回true,而且不会进行自动类型转换。
console.log(Number.isFinite(true));//false
console.log(Number.isFinite(7));//true
console.log(Number.isFinite(NaN));//false
console.log(Number.isFinite(Infinity));//false
console.log(Number.isFinite("23"));//false