JavaScript 语法、数据类型

大小写

变量、函数名、操作符区分大小写

标识符

变量、函数、属性名、函数参数,第一个字符必须是字符、下划线 ( _ ) , 或美元符($)
其它字符可以是字母,下划线,美元符或数字

注释

// 单行注释

/*
 * 多行注释
 *
 */

严格模式

ECMAScript 5 引入严格模式概念,为 JavaScript 定义了一种不同的解析与执行模型

严格模式下,ECMAScript 3 中的一些不确定行为得到处理,而且对某些不安全的操作也会抛出错误。

在整个脚本中启用严格模式,在顶部添加

"use stricr"

也可以指定函数在严格模式下执行

function doSomething() {
	"use stricr";
	// 函数体
}

语句

不强制使用分号作为语句结尾,但不推荐省略封号

var sum = a + b			// 没有分页也是有效语句,不推荐

var diff = a - b;		// 有效语句,推荐

推荐使用{} 大括号将多个语句组合到一个代码块中

if (test)
	alert(test);		// 有效但容易出错,不要使用

if (test) {				// 推荐使用
	alert(test);
}

关键字和保留字

参考 ECMA-262

变量

ECMAScript 变量支持松散绑定

定义变量使用var操作符,例如

var message;

var sum = 10;

var str = "hi";

注意:var 操作符定义的变量将成为定义该变量的作用域中的局部变量

function test() {
    var message = "hi"
}
test();
console.log(message); // 错误

虽然省略var操作符可以定义全局变量,但是不推荐这样的做法,因为难以维护,造成代码混乱

function test() {
    message = "hi"
}
test();
console.log(message); // "hi"

可以使用一条语句定义多个变量

var message = "hi",
	str = "hello",
	age = 29;

数据类型

5 种简单数据类型(基本数据类型)

  • Undefined
  • Null
  • Boolean
  • Number
  • String

1 种复杂数据类型

  • Object

typeof 操作符

对一个值使用typeof操作符可能返回下列某个字符串

  • Undefined如果这个值未定义
  • boolean如果这个值是布尔值
  • string如果这个值是字符串
  • number -如果这个值是数值
  • object如果这个值是对象或null
  • function -如果这个值是函数
var message = "some string";
console.log(typeof message);     // string
console.log(typeof (message));   // string
console.log(typeof 95);          // number

function f() {
    // do something
}
console.log(typeof f); // function

var result = true;
console.log(typeof result); // boolean

var value;
console.log(typeof value); // undefined

注意: typeof 是一个操作符,不是函数,以上代码种的括号可以使用,但不是必须的

Undefined 类型

Undefined 类型只有一个undefined特殊的值,在使用var声明变量但未对其加以初始化的时候,这个变量的是就是undefined

var message;
console.log(message == undefined); // true

var message = undefined;	// 没有必要显式地将一个变量的值设置为undefined
console.log(message == undefined); // true

Null 类型

Null 类型只有一个null特殊的值,null值代表一个空对象指针

var car = null;
console.log(typeof car); // "object"

尽管以下代码输出 true

console.log(null == undefined); // true

没有必要显式地将一个变量的值设置为undefined,但这条规则对于null不适用,只要意在保存的对象的变量还没有真正的保存对象,就应该明确地让该变量保存null值,

Number 类型

Number 类型表示整数和浮点数

可表示十进制、八进制、十六进制的数字

八进制字面值第一位必须是0,然后是八进制数字序列0~7。如果字面值种的数值超出范围,那么前面的0被忽略,后面的数值作为十进制数值解析。八进制数在严格模式下无效,并会抛出错误

var num = 070;	// 八进制的56
var n = 079;	// 无效的八进制数字,解析为79

十六进制字面值的前两位必须是0x,后面跟任何十六进制数字(09,以及AF),A~F不区分大小写

var a = 0xa;	// 十六进制的10
var b = 0x1F;  	// 十六进制的31

String类型

string类型用于表示零个或多个16位Unicode字符组成的字符序列,即字符串.可以由双引号(")或者单引号(')表示

var str = "Hello, Wrold!";
var str = '你好, 世界!';

特点是字符串长度不可变

转换为字符串,使用 toString() 方法

var a = 11;
var str = a.toString();
console.log(a + 1)      // 12
console.log(str + 1);   // 111

可以使用toString()方法进行进制转换

var num = 10;
console.log(num.toString());       //10
console.log(num.toString(2));      //1010
console.log(num.toString(8));      //12
console.log(num.toString(10));     //10
console.log(num.toString(16));     //a

Object类型

一组数据和功能的集合

var o = new Object();
var a = new Object;		// 有效,但不建议省略圆括号

每一个Object实例都有下列属性和方法

  • constructor 保存着用于创建当前对象的函数

  • hasOwnProperty(propertyName) 用于检查给定的属性在当前对实例种是否存在

  • isPropertyOf(propertyName) 用于检查传入的对象是否是当前对象的原型

  • propertyIsEnumerablr(propertyName) 用于检查给定的属性是否能够使用for-in语句来枚举

  • toLocaleString() 返回对象的字符串表示,该字符串与执行环境的地区对应

  • toString() 返回对象的字符串表示

  • valueOf() 返回对象的字符串

原文地址:https://www.cnblogs.com/Haidnor/p/12363631.html