第3章 JavaScript中的基本概念

本文详细介绍了JavaScript的基本概念和语法,包括标识符、严格模式、变量类型等,并深入探讨了Undefined、Null、Boolean等数据类型及其转换规则,还涵盖了常见的一元操作符、位操作符等。

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

1.基本概念语法

 

  • 区分大小写
  • 标示符:以字母、下划线(_)、美元符号($)或数字组成,开头只能用前3个。驼峰命名法。
  • 严格模式:“use strict”。可以只指定某个函数在严格模式下执行。
  • 变量:松散类型。不建议修给变量所保存值的类型。局部变量(有var)/全局变量(没var,不推荐)。

2.数据类型

5种简单数据类型:Undefined、Null、Boolean、Number、String;

1种复杂数据类型:Object。

 

  • Undefined:使用var声明(一定要用var声明)变量,但未对其进行初始化。只有一个值undefined。
  • Null:声明后初始化为null的,表示一个空对象指针。只有一个值null。如果定义的变量将来准备用来保存对象,最好将该变量初始化为null。undefined值派生自null:console.log(null == undefined);  //true;console.log(null === undefined);  //false;
  • Boolean:两个字面值true/false。任何数据类型的值都可调用Boolean()函数,将其转换为Boolean类型。存在自动执行的Boolean转换,如if中的判断语句和isNaN()函数。各类型转换规则如下:

 

数据类型转换为true的值转换为false的值
Booleantruefalse
String任何非空字符串" "(空字符串)
Number任何非零数字值(包括无穷大)0 和 NaN
Object任何对象null
Undefinedn/a不适用undefined
  • Number:十进制、八进制('0'开头)、十六进制('0x'开头)。浮点数值,可用e表示法(3.125e7),永远不要测试某个特定的浮点数值(IEEE754通病)。Number.MIN_VALUE(最小值)/Number.MAX_VALUE(最大值),可加负号表示负数。超出范围被转换为Infinity值,函数isFinite(变量)测试变量是否在数值范围之内。NaN(即非数值,Not a Number),表示本来要返回数值的操作数未返回数值的情况(这样就不会抛出异常,影响其他代码的执行);isNaN(参数)确定这个参数是否"不是数值"。Number(参数)可以转换任何数据类型,转换规则比较复杂。parseInt(待转换的字符串,多少进制/2/8/10/16):把字符串转为十进制整数,先找到第一个非空字符,如果第一个字符不是数字字符或负号,则返回NaN。parseFloat(需转换的字符串):把字符转换为一个浮点数,只解析十进制,对十六进制的字符串始终返回0,若字符串包含的是可解析的整数的数,会返回整数。
  • String:.toString()方法,除了null和undefined,其余都有这个方法,调用数值的toString()方法时,可以传递数值的基数(2/8/10默认/16)做参数;String(要转型的变量),适用于任何类型。
  • Object类型:是所有对象的基础,即后面声明的对象都继承它。.toString()、valueOf()、isPrototypeOf(object)。

Number()函数的转换规则,适用于后面对数值进行操作时的隐式转换:

  • 如果是Boolean值,true和false将转换为1和0。
  • 如果是数字值,只是简单的传入和返回。
  • 若果是null值,返回0;如果是undefined,返回NaN。
  • 如果是字符串,规则如下:如果字符串中只包含数字(包括前面带正负号的情况,前导零会被忽略),则将其转换为十进制。如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值(忽略前导零)。有效十六进制转换为同样大小的十进制。空字符串转换为0。若字符串中包含上述格式之外的字符,则将其转换为NaN。如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值,如果转换的是NaN,则调用对象的toString()方法,然后再次依照前面的规则转换返回的字符串。

 

3.操作符

 

  • 一元操作符:++a/--a(a先改变再做其他运算);a++/a--(a先参与运算再改变)。num = +num(数值不会产生任何影响);num = -num(用于表示负数)。
  • 位操作符:对于有符号的整数,32位的前31位表示整数的值,第32位表示数值的符号:0正1负。按位非(~)、按位与(&)、按位异或(^)、左移(<<,左移不会影响操作数的符号位)、有符号的右移(>>)、无符号右移(>>>)。这一块没好好看
  • 布尔操作符:逻辑非(!)、逻辑与(&&)、逻辑或(||)。
  • 逗号操作符:var num = (5,1,4,8,0); //num的值为0  在用于赋值时,逗号操作符总会返回表达式中的最后一项。
  • 其他操作符:+  -  *   /   ===   ==   !==   !=   等等一大堆常见的

4.语句

跟Java和c++的语句没啥太大差别。下面是几个我自己需要注意也是不太一样的地方:

 

  • for-in:例:for(var propName in window){document.write(propName);}。 建议在使用for-in循环之前,先检测确认该对象的值不是null或undefined。
  • label:在代码中添加标签,以便将来使用。一般都要与break/continue和循环语句使用。
  • with:新增的语句。将代码的作用域设置到一个特定的对象中。with(location){//可以直接使用location中的属性变量等}。大量使用with语句会导致性能下降,同时也会给调试代码造成困难,因此不建议使用with语句。
  • switch:与其他语言不一样的地方,可以在switch语句中使用任何数据类型(在很多语言中只能使用数值),无论是字符串还是对象都没有问题。case的值不一定是常量,可以是变量,甚至是表达式。
  • 函数:可以向函数传递任意数量的参数。函数的参数在内部是用一个数组来表示,在函数体内可以通过arguments对象来访问这个数组,另外:arguments的值永远与对应的命名参数的值保持同步,另外记住:如果只传入了一个参数,那么为arguments[1]设置的值不会反映到命名参数中,因为argements对象的长度是由传入的参数个数决定,不是由定义函数时的命名参数的个数决定的。没有重载,如果定义了两个名字相同的函数,则该名字只属于后定义的函数。未指定返回值得函数返回的是一个特殊的undefined值。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值