JS:变量,typeof,数据类型,数据类型转换,for-in语句,with语句

声明当前执行环境的变量:

var message;

var message = 'hi';

var message = 'hi',

      found = false,

      age = 29;

声明全局变量:

message = 'hi';

typeof:用来检测给定变量的数据类型

返回值:

  • 'undefined':这个值未定义;
  • 'boolean':这个值是布尔值;
  • 'string':这个值是字符串;
  • 'number':这个值是数值;
  • 'object':这个值是对象或null;
  • 'function':这个值是函数。

数据类型:Undefined, Null, Boolean, Number, String

转型函数:Boolean(),Number(), parseInt(), parseFloat(),toString(), String(), 值+"",

Undefined类型:

Undefined类型的值:只有undefined

只声明了变量,但未对变量初始化,这个变的类型就是Undefined,值就是undefined.

var message;

alert(message == undefined);//true

var message = undefined;

alert(message == undefined);//true

Null类型:

Null类型的值:只有一个null

一个空对象指针的数据类型是Null,值是null

Boolean类型:

Boolean类型的值:只有两个值,truefalse

ECMAScript中所有类型的值都有与这两个Boolean值对应的值,这些值可以使用转型函数Boolean()转换为相应的Boolean值

如:

var message = "Hello world!";

var messageAsBoolean = Boolean(message);

各个数据类型和Boolean值的对应规则

数据类型   转换为true的值 转换为false的值
Boolean   true false
String 非空字符串 ""(空字符串)
Number 非零数字值 0和NaN
Object 任何对象

null

Undefined 不适用 undefined

 

 

 

 

 

 

if语句自动执行相应Boolean转换,如:

var message = "Hello world!"

if(message){

  alert("Value is true");

}

Number类型:

字面量格式

var intNum = 55;//整数

八进制字面量严格模式下无效

var octalNum1 = 070;//八进制56

var octalNum2 = 079;//无效的八进制数值,解析为79

var octalNum3 = 08;//无效的八进制数值,解析为8

var hexNum1 = 0xA;//十六进制10

var floatNum1 = 1.1;

var floatNum2 = 3.12e7

NaN:not a number.非数值

isNaN()参数可以转换成数值返回false,否则返回true

如:

isNaN(NaN);true

isNaN(10);false

isNaN('10');false 转换为10

isNaN("blue");true

isNaN(true);false 转换为1

将其它数据类型转换为数值类型:

Number()

Boolean:true->1,false->0

Number:返回原值

Null:null->0

Undefined:undefined->NaN

String:"Hello world"->NaN,""->0, "000011"->11

Object:先调用对象的valueOf()方法,然后依照前面的规则转换成返回值,如果转换出的返回值是NaN,则调用toString()方法,再依照前面的规则转换成返回值返回

字符串按照数值模式转换为整数数值

parseInt():从第一个有效字符开始解析,直到第一个无效字符为止

parseInt('70'):70

parseInt('22.5'):22

parseInt("1234blue"):1234

parseInt(""):NaN

parseInt("blue123"):NaN

字符串按照数值模式转换为浮点数数值

parseFloat():从第一个有效字符开始解析,直到第一个无效字符为止(忽略前导零)

parseFloat('123blue'):1234(整数)

parseFloat('000022.5'):22.5

将一个值转换成字符串

1.值的toString()方法,返回值的字符串表现

var age = 11

var ageAsString = age.toString();//"11"

var found  = true;

var foundAsString = found.toString();//"true"

值null和undefined没有这个方法

2.String()函数

如果值有toString()方法,则调用该方法

如果值是null,则返回“null”

如果值是undefined,则返回“undefined”

3.把这个值和""相加

Object类型(引用类型):Object类型的具体的值叫做“对象”,对象的本质是一组没有特定顺序的值。(无序属性的集合,其属性可以包含基本值对象,或者函数

Object对象是所有其他ECMAScript对象的基础只适用于ECMAScript中的对象,不是指宿主环境中的对象,如BOM、DOM中的对象)

创建Object类型:

var o = new Object();

Object类型的固有属性和方法

Constructor

hasOwnProperty(propertyName)

isPrototypeOf(object):

propertyIsEnemerable(propertyName)

toLocaleString()

toString()

valueOf()

更深入理解Object类型的值。。。

for-in语句:

for-in语句枚举对象的属性

for (var propName in window){

  document.write(propName);

}

在使用for-in循环之前,先检测确认该对象的值是不是null或undefined,因为ECMAScript 3以及之前版本会抛出错误

with语句:(严格模式下不允许使用)

设置代码作用域

var qs = location.search.substring(1);

var hostName = location.hostname;

var url = location.href;

等同于:

with(location){

  var qs  = search.substring(1);

  var hostName = hostname;

  var url = href;

}//这里面定义的变量的作用域还是和with外面的一样

 

posted @ 2016-04-23 16:54  Carolina  阅读(233)  评论(0编辑  收藏  举报