JavaScript 基础【002 - 基本概念】

标识符

指 变量、函数、属性的名字,或者 函数的参数,可以是按下列规则组合起来的 一个或多个字符:

  • 首字符 为字母、下划线(_)或 美元符号($);
  • 其他字符可以是 字母、下划线、美元符号 或 数字;
  • 采用 驼峰大小写 格式。

注意:
不能把 关键字、保留字、true、false、null 用作标识符。
关键字
break, case, catch, continue, debugger, default, delete, do, else, finally, for, function, if, in, instanceof, new, return, switch, this, throw, try, typeof, var, void, while, with
保留字
abstract, boolean, byte, char, class, const, debugger, double, enum, export, extends, final, float, goto, implements, import, int, interface, long, native, package, private, protected, public, short, static, super, synchronized, throws, transient, volatile

注释

单行注释:

// 单行注释

块级注释:

/*
 * 多行(块级)注释
 */

变量

ECMAScript 的变量是松散类型的,可以用来保存 任何类型 的数据。定义变量时,使用 var 操作符,此时定义的变量是 定义该变量的作用域 中的 局部变量。省略 var 操作符可以定义全局变量。

var message; // 未经初始化的变量,值为 undefined
var message = 'hi';

数据类型

ECMAScript 有 5 种基本数据类型(分别为 Undefined、Null、Boolean、Number 和 String)和 1 种复杂数据类型(Object 类型),不支持任何创建自定义类型的机制。
ECMAScript 数据类型

Undefined 类型

仅有一个值 undefined。未经初始化的变量 值为 undefined。一般而言,不需要显式地把一个变量设置为 undefined。

Null 类型

仅有一个值 null,表示一个 空对象指针。意在保存对象的变量,建议初始化为 null。

Boolean 类型

有两个字面值:true 和 false。可以对任何数据类型的值调用 Boolean() 函数,且总会返回一个 Boolean() 值。在 流控制语句(如 if 语句)中,会 自动执行 相应的 Boolean 转换
各种数据类型对应的 转换规则 如下:

数据类型转换为 true 的值转换为 false 的值
Booleantruefalse
String任何非空字符串“” (空字符串)
Number任何非零数字值(包括无穷大)0 和 NaN
Object任何对象null
Undefined——undefined

Number 类型

Number 类型采用 IEEE-754 格式表示 整数和浮点数值。其中,整数 数值字面量格式可以是 八进制、十进制、十六进制,但在进行算术计算时,统一使用十进制数值。另外,由于 浮点数值 所需内存空间是保存整数的两倍,因此,在下列情况下,数值会作为整数值来保存:

  • 小数点后没有跟任何数字
  • 浮点数值本身表示的就是一个整数

对于 极大极小(小数点后有6个以上的0) 的数值,可使用 e表示法 表示。

Number 类型
其中,转型函数 Number()转换规则 如下:

  • Boolean 值 true 和 false 分别返回 1 和 0;
  • 数字值 只是简单的传入和返回;
  • null 值返回 0;
  • undefined 值返回 NaN;
  • 对于 字符串:
    1. 只包含 数字,则将其转换为 十进制数;
    2. 包含 有效的浮点格式,则转换为对应的 浮点数值;
    3. 包含 有效的十六进制格式,则转换为相同大小的十进制整数;
    4. 空字符串 转换为 0;
    5. 包含除上述格式之外的字符,转换为 NaN;
  • 对于 对象,先调用 valueOf() 并转换,若转换结果为 NaN,再调用 toString() 方法并进行转换。

在处理 整数 时,我们常用 parseInt() 函数,对于字符串,其 转换规则 如下:

  • 从 第一个非空格字符 开始转换(始终忽略前导零);
  • 若第一个字符不是 数字字符 或 负号,则返回 NaN(即 parseInt() 对空字符串返回 NaN);
  • 解析过程 直到完成所有后续字符 或 遇到非数字字符;
  • 为避免转换过程中,由整数的进制问题导致错误,建议使用时在 parseInt() 的第二个参数中 明确指定基数。

对于 parseFloat() 函数,转换规则与 parseInt() 类似,不同点如下:

  • 字符串中 第一个小数点 有效;
  • 只解析 十进制值;
  • 若字符串包含的是可解析为整数的数,则返回整数。

String 类型

String 类型用于表示由零或多个 16位 Unicode字符 组成的字符序列,即字符串。

String 类型

对于 转型函数 toString() ,可用于 数值、布尔值、对象和字符串值,其中,在调用数值的 toString() 方法时,可传递一个参数:输出数值的基数(默认十进制)。
由于 null 和 undefined 值没有 toString() 方法,在不确定要转换的值是否为 null 或 undefined 时,可使用 转型函数 String(),该函数可将任何类型的值转换为字符串,转换规则 如下:

  • 该值有 toString() 方法,则调用该方法并返回相应结果;
  • 值为 null,则返回 “null”;
  • 值为 undefined,则返回 “undefined”。

Object 类型

ECMAScript 中的对象 其实就是一组数据和功能的集合。Object 类型是所有它的实例的基础。Object 的每个实例 都具有下列属性和方法:

  • constructor:保存着 用于创建当前对象的函数;
  • hasOwnProperty( propertyName ):用于检查 给定的属性 在当前对象实例中是否存在,propertyName 为字符串格式;
  • isPrototypeOf( object ):用于检查 传入的对象是否是当前对象的原型;
  • propertyIsEnumerable( propertyName ): 用于检查 给定的属性是否可使用 for-in 语句;
  • toLocaleString() :返回对象的 字符串表示,该字符串与执行环境的地区对应;
  • toString() :返回对象的 字符串表示;
  • valueOf() :返回对象的 字符串、数值 或 布尔值 表示。

typeof 操作符

typeof 操作符用于检测 给定变量的数据类型,对一个值使用 typeof 操作符可能返回下列某个字符串:

  • "undefined" —— 值 未定义,或 变量未初始化
  • "boolean" —— 值是 布尔值;
  • "string" —— 值是 字符串;
  • "number" —— 值为 数值;
  • "object" —— 值为 对象 或 null
  • "function" —— 值为 函数。

操作符

ECMAScript 规定的操作符有以下 10 种:
JS操作符

  1. 一元操作符

一元操作符

  1. 位操作符

位操作符

  1. 布尔操作符

布尔操作符

  1. 乘性操作符

乘性操作符

  1. 加性操作符

加性操作符

  1. 关系操作符

关系操作符

  1. 相等操作符

相等操作符

  1. 条件操作符

条件操作符 语法如下:

value = boolean_expression ? true_value : false_value ;
  1. 赋值操作符

赋值操作符

  1. 逗号操作符

逗号操作符 多用于:

  1. 声明多个变量;
  2. 赋值(返回表达式中最后一项)

流控制语句

EXMAScript 规定的语句有以下几种:
JS 语句

if 语句

if (condition) statement1 else statement2

if (condition1) {
	// statement1
} else if (condition2) {
	// statement2
} else {
	// statement3
}

do-while 语句

循环体内的代码至少会被执行一次(后测试循环语句)。

do {
	// statement
} while (expression);

while 语句

循环体内的代码有可能永远不会被执行(前测试语句)。

while (expression) statement

for 语句

前测试循环语句。

for (initialization; expression; post-loop-expression) {
	// statement
}

for-in 语句

for-in 语句用来 枚举对象的属性。通过 for-in 循环输出的属性名的顺序是不可预测的。另外,建议在使用 for-in 循环之前,先检测确认该对象的值 不是 null 或 undefined。

for (property in expression) {
	// statement
}

label 语句

使用 label 语句可以在代码中添加标签。加标签的语句一般与 for 语句、break 和 continue 语句等联合使用,从而在执行中返回 代码特定位置(这种联合使用 多发生在 嵌套循环 的情况下)。
如果使用 label 语句,一定要使用描述性的标签,同时不要嵌套过多的循环。

label: statement

with 语句

with 语句用于将代码的作用域设置到一个特定的对象中,以简化多次编写同一个对象的工作。【不建议使用】
代码示例如下:

with(location) {
	var qs = search.substring(1); // 即 location.search.substring
	var hostName = hostname;
	var url = href;
}

switch 语句

当有多个判别条件时,可以使用 switch 语句。在 switch 语句中可以使用任何数据类型,每个 case 的值也可以是 常量、变量或表达式。需要注意的是,switch 语句在比较值时,使用的是 全等操作符

switch (expression) {
	case value: statement
		break;
	case value: statement
		break;
	default: statement
}

函数

函数的基本语法如下:

function functionName (arg0, arg1, ..., argN) {
	statements
}

关于 return 语句:

  • 任何函数 在任何时候 都可通过 return语句后跟要返回的值 来实现返回值;
  • 函数在定义时不必指定是否返回值(未指定返回值的函数,返回 undefined);
  • return 语句也可以不带任何返回值;
  • 函数体内 return 语句后的语句不再执行;
  • 要么让函数 始终都返回一个值,要么 永远都不要返回值推荐做法

关于 函数参数:

  • ECMAScript 中的参数在内部使用一个 数组 来表示的(也就是说,函数参数 可以有任意个,也可以是任何数据类型);
  • 在函数体内可通过 arguments 对象 来访问该函数的参数数组,从而获取传递给函数的每一个参数;
  • 命名的参数只提供便利,但不是必须的。解析器不会验证命名参数;
  • 通过访问 arguments 对象的 length 属性,可获知有多少个参数传递给了函数(也就是说,arguments 对象的长度,由传入的参数个数决定,而非定义函数时的命名参数个数);
  • arguments 对象 可以与 命名参数 一起使用。其中,arguments 对象的值永远与对应的命名参数保持同步(内存空间相独立,但 值同步);
  • 没传递值的命名参数,将自动被赋予 undefined 值;
  • 参数传递的是 ,不可能通过 引用 传递参数。

关于 函数重载:

  • 由于不存在 函数签名(参数类型和数量) 的概念,ECMAScript函数不能重载;
  • 通过检查传入函数中的 参数的类型和数量 并作出不同的反映,可以模仿方法的重载。

更多内容,欢迎访问 FU的博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值