JavaScript学习------基本概念

本文详细介绍了JavaScript中的标识符、关键字、数据类型、数值转换及位操作符等内容,帮助读者掌握JavaScript的基本语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标识符

标识符:指变量、函数、属性名或函数的参数。

标识符命名规则:

  • 第一个字符必须是字母、下划线或一个美元符号
  • 其他字符是字母、下划线、美元符号或数字
  • 采用驼峰大小写格式命名
  • 不能使用关键字、保留字、true、false和null用作标识符

关键字:

breakdoinstanceoftypeof
caseelsenewvar
catchfinallyreturnvoid
continueforswitchwhile
debugger(第5版新增)functionthiswith
defaultifthrowdelete
intry  

保留字(第3版):

abstractenumintshort
booleanexportinterfacestatic
byteextendslongsuper
charfinalnativesynchronized
classfloatpackagethrows
constgotoprivatetransient
debuggerimplementsprotectedvolatile
doubleimportpublic 

第5版在非严格模式下运行时的保留字缩减为下列:

classenumextendssuper
constexportimport 

严格模式下第5版对下列保留字加以限制:

implementspackagepublicinterface
privatestaticlet(第5版新增)protected
yield(第5版新增)   

在严格模式下,第5版对eval和arguments也施加了限制,不能作为标识符或属性名,否则会抛出错误

数据类型

NaN

即非数值(Not aumber) 是一个特殊的数值,用于表示一个本来要返回数值的操作数未返回数值的情况。  

特点:

  • 任何涉及NaN的操作都会返回NaN                   
  • NaN与任何值都不相等,包括本身

JavaScript定义了isNaN()函数,任何不能转换为数值的都返回为true

分子分母都为0相除返回NaN,如0/0返回NaN

Null

只有一个值的数据类型,为null,逻辑角度null表示一个空对象指针,使用typeof操作符检测null值返回object

Undefined

只有一个值,及特殊的undefined     

  • 变量未初始化
  • 变量未定义时     
  • 函数无明确返回值

测试某个值是否未定义使用“===”操作符,“==”操作符认为undefined值等于null

数值加undefined为NaN,如10+undefined为NaN

Infinity

Infinity 属性用于存放表示正无穷大的数值。

Infinity 是全局对象的一个属性,即它是一个全局变量。

Infinity 的初始值是Number.POSITIVE_INFINITY。Infinity (正无穷大)大于任何值。该值和数学意义上的无穷大很像,例如任何正值乘以 Infinity 为 Infinity , 任何数值(除了Infinity 和 -Infinity)除以 Infinity 为 0。

规则:

  • Infinity 与0相乘为NaN
  • Infinity与Infinity相乘为Infinity
  • Infinity与Infinity相除为NaN
  • 非零有限数被零除,结果是Infinity(正负取决于有符号操作数的符号)
  • Infinity被任何非零数值除,结果是Infinity(正负取决于有符号操作数的符号)
  • 无穷大值对有限大值求模,结果为NaN,如Infinity%23结果为NaN
  • 有限大值对无限大值求模,结果为有限大值,如23%Infinity结果为23
  • Infinity加-Infinity,结果为NaN
  • +0加-0,结果为+0
  • Infinity减Infinity,结果为NaN
  • -Infinity减-Infinity,结果为NaN
  • Infinity减-Infinity,结果为Infinity
  • -Infinity减Infinity,结果为-Infinity
  • -0减-0,结果为+0

浮点数值

由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机的将浮点数值转换为整数值

浮点数值的最高精度是17位小数

数值范围

ECMAScript能够表示的最小数值存在Number.MIN_VALUE中,在大多数浏览器中,这值为5e-324;能够表示的最大数值保存在Number.MAX_VALUE中,大多数浏览器中,这值为1.7976931348623157e+308。超出范围,值将自动转换成Infinity,可以使用isFinite()函数判定,在范围之内返回true。

分母为0相除返回Infinity,如10/0返回Infinity

数值转换

有3个函数把非数值转换为数值:Number()、parseInt()、parseFloat()

Number()函数的转换规则:

  • 如果是Boolean值,true和false将分别转换为1和0
  • 如果是null值,返回0
  • 如果是undefined,返回NaN
  • 如果是字符串,遵循下列规则:

如果字符串只包含数字,则将转换为十进制数值(前导若有零则会忽略)

如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值(前导若有零则会忽略)

如果字符串中包含有效的十六进制格式,则将其转换为相同大小的十进制整数值

如果字符串是空,则将其转换为0

如果字符串包含除上述格式之外的字符,则将其转换为NaN

  • 如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果结果是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串值

Number类型提供一些用于将数值格式化为字符串的方法:

toFixed():按照指定的小数位返回数值的字符串表示,可以表示带有0-20个小数位的数值

toExponential():返回以指数表示法表示的数值的字符串形式,接受一个参数且该参数同样也是指定输出结果中的小数位数

toPrecision():返回值看哪种格式最适合,接受一个参数,即表示数值的所有数字的位数(不包括指数部分),,可以表示1-21位小数

	var num=10;
	console.log(num.toFixed(2));//"10.00"
	console.log(num.toExponential(1));//"1.0e+1"
	console.log(num.toPrecision(1));//"1e+1"
	console.log(num.toPrecision(2));//10
	console.log(num.toPrecision(3));//10.0

parseInt()函数转换规则:

  • 转换字符串时,忽略前面的空格,直至找到第一个非空格字符,若果第一个字符不是数字字符或者负号,parseInt()返回NaN
  • 如果为空字符串,parseInt()返回NaN
  • 如果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完或遇到第一个非数字字符,如“1234blue”会转换为1234,“22.5”会转换为22
  • parseInt()能识别各种整数格式,0x开头且后跟数字字符是十六进制、0开头且后跟数字字符是八进制,ECMAScript5已不具有解析八进制能力,如070会认为是70
  • 为了消除上述困惑,parseInt()函数提供第二个参数:转换时使用的基数(即多少进制),如parseInt("AF",16)结果为175,parseInt("AF")结果为NaN

parseFloat()函数转换规则:

  • parseFloat()也是从第一个字符开始解析每个字符,直到字符串末尾或者遇到一个无效的浮点数字字符为止
  • parseFloat()始终会忽略前导0,十六进制格式的字符串则始终被转换为0,由于parseFloat()只解析十进制,因此没有用第二个参数指定基数的用法
  • 如果字符串包含的是一个可解析为整数的数(没有小数点或小数点后面都是0),parseFloat()会返回整数

位操作符

按位非(~):

按位非操作本质:操作数的负值减一

var num=25;
var num1=~num;
alert(num1);//-26

按位与(&):

均1为1

var result=25 & 3;
alert(result);//1

底层操作:

25 = 0000 0000 0000 0000 0000 0000 0001 1001

  3 = 0000 0000 0000 0000 0000 0000 0000 0011


and=0000 0000 0000 0000 0000 0000 0000 0001

按位或(|):

均0为0

var result = 25 | 3;
alert(result);//27

底层操作:

25 = 0000 0000 0000 0000 0000 0000 0001 1001

  3 = 0000 0000 0000 0000 0000 0000 0000 0011 


or = 0000 0000 0000 0000 0000 0000 0001 1011

按位异或(^):

两个数相同(都为1或都为0)为0,不同(一个数为1一个数为0)为1

var result = 25 ^ 3;
alert(result);//26

底层操作:

25 = 0000 0000 0000 0000 0000 0000 0001 1001

  3 = 0000 0000 0000 0000 0000 0000 0000 0011 


xor = 0000 0000 0000 0000 0000 0000 0001 1010

布尔操作符

逻辑非(!):

逻辑非操作符遵循下列规则:

  • 若操作数是一个对象,返回false
  • 若操作数是一个空字符串,返回true
  • 若操作数是数值0,返回true
  • 若操作数是任意非0数值(包括Infinity),返回false
  • 若操作数是null或NaN或undefined,返回true

逻辑与(&&):

均真为真

逻辑与操作符遵循下列规则:

  • 如果第一个操作数是对象,则返回第二个操作数
  • 如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象
  • 如果两个操作数都是对象,则返回第二个操作数
  • 如果第一个操作数是null,则返回null
  • 如果第一个操作数是NaN,则返回NaN
  • 如果第一个操作数是undefined,则返回undefined
  • 如果第一个操作数能够决定结果,则不会再对第二个操作数求值,如第一个操作数是false,则无论第二个操作数是什么值都返回false

逻辑或(||):

均假为假

逻辑或操作符遵循下列规则:

  • 如果第一个操作数是对象,则返回第一个操作数
  • 如果第一个操作数的求值结果为false,则返回第二个操作数
  • 如果两个操作数都是对象,则返回第一个操作数
  • 如果两个操作数是null,则返回null
  • 如果两个操作数是NaN,则返回NaN
  • 如果两个操作数是undefined,则返回undefined
  • 如果第一个操作数能够决定结果,则不会再对第二个操作数求值,如第一个操作数是true,则无论第二个操作数是什么值都返回true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值