JS简介

 
基础语法
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

posted on 2019-06-30 09:07  蜀风古韵  阅读(623)  评论(0编辑  收藏  举报

导航