基本概念

一、语法

一)区分大小写

二)标识符

书写规则同Java

三)注释

四)严格模式

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

"use strict"

2.指定函数在严格模式下执行:

function doSth() {
"use strict"
//函数体
}

二、变量

ECMAScript变量类型是松散类型,所谓松散类型就是可以保存任何类型的数据。

//定义变量
var msg;
//注意由var定义的变量是局部变量,如果变量在函数中函数退出后变量就会被销毁 //省略var定义并初始化一个全局变量
msg2 = "Hi"
//不推荐在函数中定义全局变量,因为在局部作用域中定义全局变量很难维护,
//函数中的全局变量也会因为不会马上就用定义导致不必要的混乱 //定义多个
var a = 1,b = 'yes',c = 5;

三、数据类型

五种基本数据类型:Null,Undefined, Boolean, Number, String

一种复杂数据类型:Object,Object本质上是由一组无序的名值对组成。

ECMAScript不支持任何创建自定义类型机制,所以所有的类型最终都将是上述6种类型之一。

typeof操作符:用于检测变量类型。对一个值使用该操作符会返回下列字符串之一:

1."undefined":

2."boolean"

3."string"

4."number"

5."object":如果该值是对象或者null

6."function"

一)Undefined类型

Undefined类型只有一个值:undefined

 var msg;
var name = undefined;
console.log(msg == undefined); //true
console.log(name === undefined); //true
// console.log(age); //报错----"age is not defined"
console.log(typeof age); //"undefined"-----对于未声明的变量,只能执行该操作

所以,显示地初始化变量是最吼的!!!!+1s

二)Null类型

Null也只有一个值:null。

undefined派生于null

alert(null == undefined); //true

三)Boolean类型

要将一个值转换为Boolean类型可以调用Boolean()函数。

各种类型转换为Boolean类型

数据类型                                   转换为true的值                                  转换为false的值

String                                    任何非空字符串                                   ""即空串

Number                                 任何非零数字                                      0和NaN

Object                                   任何Object                                           null

Undefined                             n/a (不适用)                                    undefined

注意:

var msg = "hi";
if (msg) { //自动转换为Boolean类型
console.log("msg is true");
}

四)Number类型

console.log(typeof Infinity); //number
console.log(typeof NaN); //number

1.整数

可以是十进制八进制(八进制严格模式无效)十六进制

var a = 070  //八进制56
var b = 079 //无效的八进制,解析为79

2.浮点数

var a = 1.0    //自动解析为1
var b = .123 //有效不推荐
var c = 1.23e3 // if (0.3+0.2 == 0.5) { //因为浮点数计算时精度问题,不要这样做
}

3.数值范围

最小:Number.MIN_VALUE      最大:Number.MAX_VALUE    超出范围自动转换为Infinity,Infinity不能参与数值计算。

判断是否属于最大与最小之间可以用:isFinite(num)函数。

4.NaN

即(Not a number)是一个特殊数值,表示本来要返回数值而没有返回的情况(这样就不用报错了)。

注意:1.任何涉及NaN的操作都会返回NaN       2.NaN与任何数值都不相等,包括其本身。

isNaN()

console.log(isNaN(NaN));    //true
console.log(isNaN("Yellow")); //true
console.log(isNaN("100")); //false

5.数值转换

1.Number()函数:

可用于任何数据类型

Boolean值分别转换为1和0

null转换为0

undefined转换为NaN

字符串:

只包含数值转换为10进制,包含有效的16进制格式转换为10进制,空串转换为0,其余转换为NaN。

如果是对象则先调用valueOf()函数,如果得到NaN则再调用toString()

var num1 = Number("Hello world!"); //NaN
var num3 = Number("000011"); //

2.parseInt()函数:

parseInt()函数会忽略字符串前面的空格,直到找到第一个非空字符,如果第一个字符不是数字或者负号就返回NaN

var num1 = parseInt("1234blue"); //
var num2 = parseInt(""); // NaN
var num3 = parseInt("0xA"); // 10(十六进制数)
var num4 = parseInt(22.5); //
var num5 = parseInt("070"); // 56(八进制数)
var num1 = parseInt("AF",); //
var num2 = parseInt("AF"); //NaN

五)String类型

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

2.ECMAScript 中的字符串是不可变的

3.转换为字符串可用toString()函数,也可用String()函数:

 如果值有 toString()方法(null和undefined没有这个方法),则调用该方法(没有参数)并返回相应的结果;
 如果值是 null,则返回"null";
 如果值是 undefined,则返回"undefined"。

三)Object类型

ECMAScript中类型是所有他的实例的基础,即Object具有的所有方法和属性同样存在于更具体的对象中。

Object每个实例具有的方法和属性:

1)constructor:保存着创建当前对象的函数,比如,Object()

2)hasOwnProperty(propertyName):用于检查给定的属性在对象实例中(而不是实例的原型中)是否存在。其中propertyName必须以字符串的形式指定。

3)propertyIsEnumerable(propertyName):检查给定的语句能否用for-in语句来枚举。同样propertyName必须是字符串。

4)toLocalString()

5)toString()

6)valueOf()

注意:从技术角度讲, ECMA-262 中对象的行为不一定适用于 JavaScript 中的其他对象。浏览器环境中的对象,比如 BOM 和 DOM 中的对象,都属于宿主对象,因为它们是
由宿主实现提供和定义的。 ECMA-262 不负责定义宿主对象,因此宿主对象可能会也可能不会继承 Object。

三、操作符

1.布尔操作符特别的地方

1)逻辑与(&&):

 如果第一个操作数是对象,则返回第二个操作数;
 如果第二个操作数是对象,则只有在第一个操作数的求值结果为 true 的情况下才会返回该
对象;
 如果两个操作数都是对象,则返回第二个操作数;
 如果有一个操作数是 null,则返回 null;
 如果有一个操作数是 NaN,则返回 NaN;
 如果有一个操作数是 undefined,则返回 undefined。

2)逻辑与(||):

 如果第一个操作数是对象,则返回第一个操作数;
 如果第一个操作数的求值结果为 false,则返回第二个操作数;
 如果两个操作数都是对象,则返回第一个操作数;
 如果两个操作数都是 null,则返回 null;
 如果两个操作数都是 NaN,则返回 NaN;
 如果两个操作数都是 undefined,则返回 undefined。

四、语句

for in 对对象的属性进行遍历,其顺序不可预测。

label语句:

var num = 0;
outermost:
for (var i=0; i < 10; i++) {
for (var j=0; j < 10; j++) {
if (i == 5 && j == 5) {
break outermost;
}
num++;
}
}
alert(num); //

使用with语句会导致性能下降,调试困难,不建议使用。

switch语句

可以在switch()括号中使用任何类型,case中也不一定是常量,可以是变量或者表达式。

注意:switch语句在比较时使用的是全等符,因此不会发生类型转换。

五、函数

语法:

function funName() {
//doSth
}

注意:

1.调用函数时必须带上括号

2.不必指定返回值,当然也可以指定

3.return语句不带任何返回值时,函数在停止后返回undefined

4.函数参数可以是任意多个,调用函数时可以传递任意多个参数,不一定与定义时相等,

因为这个特性ECMAScript中函数不能重载,后定义的函数会覆盖先定义的函数。

之所以会出现4中的情况,ECMAScript函数在函数内部时用一个类似数组的arguments对象来表示的,可以像用数组一样使用arguments对象。

我们可以根据arguments的长度实现一个伪重载:

function doAdd() {
if(arguments.length == 1) {
alert(arguments[0] + 10);
} else if (arguments.length == 2) {
alert(arguments[0] + arguments[1]);
}
}

最新文章

  1. About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷
  2. OpenCv ROI操作
  3. jenkins中submodule的使用
  4. testng xml中按顺序执行java类
  5. ImageMagick Remote Command Execute
  6. 循环生成sql文件。
  7. CC2540 USB DONGLE 使用 BTool 调试BLE 说明
  8. MATLAB中的nargin与varargin的用法
  9. WCF寻址
  10. [转] C# 键盘中的按键对应的KeyValue
  11. Oracle表空间扩展
  12. SDWebImage 在多线程下载图片时防止错乱的策略
  13. uvalive 6657 GCD XOR
  14. checkbox和radio的样式美化问题
  15. 一条语句导致CPU持续100%
  16. 用shape画内圆外方,形成一个圆形头像
  17. extjs__(grid Panel绑定数据)
  18. pycurl安装
  19. Android应用开发中,第三方集成新浪微博(sinaWeiboSDK)的过程记录
  20. 【git】仓库目录下文件不加入版本控制

热门文章

  1. bootstrap的模拟单选按钮
  2. Derive representation formula from Green’s identity
  3. 【NPM】常见问题解决
  4. windows下面使用nssm设置新的服务实现开机自启等
  5. 对线性回归,logistic回归和一般回归
  6. du -h排序
  7. JMeter命令行监控CPU和内存资源
  8. 使用java操作kudu
  9. net core体系-web应用程序-4net core2.0大白话带你入门-11asp.net core 2.0 cookie的使用
  10. 关于ubuntu的ssh远程登录的问题