Javascript学习笔记一基本数据类型与变量声明

Javascript变量的数据类型

Javascript有6种基本类型,也叫基础类型或元类型分别是:

  1. undefined 未定义 值类型
  未声明的变量或声明过但未赋值的变量的值为undefined。也可以显式或隐式的给变量赋值为undefined

  2. number 数值 值类型
  除赋值操作外,只有数值与数值的运算结果是数值;一些函数或方法的返回值是数值

  3. string 字符串 值类型
  不能直接读取或修改字符串中的单一字符,字符串在赋值运算中会按引用类型的方式来处理

  4. boolean 布尔值 值类型
  true/false

  5. function 函数 引用类型
  Javascript中的函数存在多重含义,包括函数、方法、构造器、类及函数对象

  6. object 对象 引用类型
  基于原型继承的面向对象,因为不具备对象系统的全部特性,Javascript通常被称为基于对象而非面向对象的语言。

任何一个变量或值的类型都可以使用typeof运算得到。typeof关键字是保留关键字,其调用形式如下:

var str = “abc“;
alert(typeof str)
//或者
alert(typeof(str))

 变量的声明

Javascript中变量的声明有两种方法:

1. 显示声明
var 关键字进行声明即显示声明如:

var str = “abc“;

当然函数声明及异常捕获字句中声明的异常对象也是显示声明:

function foo(){
}
try{
}
catch(ex){
}

2. 隐式声明
隐式声明通常发生在不使用关键字var的赋值语句中,如:

str = “abc“;

解释器对隐式声明的理解为:如果变量未被声明,则先声明该变量并立即赋值;如变量已声明,则该语句是赋值语句

变量的作用域

作用域有全局作用域及局部作用域,全局变量的作用域当然是全局作用域(貌似是废话),函数内部声明的变量是局部变量,作用域也

是函数体这一局部内。

var str = "abc";
function foo(){
 var str = "def";
 document.write (str);
}
foo();      //输出def
document.write (str);  //输出abc

全局变量的声明可以不使用var 关键字,但在局部变量的声明中一定要使用var关键字,否则会视为对全局变量的引用或声明了全局

变量,如下代码所示:

var str = "abc";   //改行存在与否不影响最终输出
function foo(){
 str = "def";
 document.write (str);
}
foo();      //输出def
document.write (str);  //输出def

Javascript 没有块级作用域一说,函数中声明的变量在整个函数中都是有定义的,看下面的代码:

function foo(){
 document.write(str); //语句A
 var str = “abc”;
 document.write(str); //语句B
 document.write(i);  //语句 C
 for(var i = 0; i< 4; i++){
  
 }
 document.write(i);  //语句 D
}
foo();     //A输出 undefined,B输出 abc ,C输出 undefined,D 输出 4

在变量声明之前输出,出现 undefined,是因为Javascript 会将所有的变量及函数声明提升到作用域的顶部,提升只会提升声明,

而赋值不会提升,另外注意:函数提升,只会提升函数的声明方式,表达式形式的则不会提升。

 

posted @ 2012-11-15 22:36  kdalan  阅读(1073)  评论(0编辑  收藏  举报