javascript之变量类型与变量声明及函数变量的运行机制

[size=medium][b]一、Javascript 中的数据类型[/b][/size]

[b]JavaScript 中一共有7种数据类型[/b]
1. 基本数据类型(5种):数字、文本、布尔、null、undefinded
2. 对象数据类型(2种):object, function

-

function 是一个特殊的对象,它内部所包含的代码可以再次被运行。


这里要搞清楚2个概念:变量的定义和变量的值。


变量的值是在变量运行时产生的一个实例。因为 JavaScript 是一边解释一边运行的,无需编译。除了 function 数据类型之外,其它6种在定义时就产生了值。而Function在声明时,不会去运行,只是产生了一个包含一段代码的Function对象。

Function在定义时,在内存中并未生成实例。只有被调用,运行时,才会在内存中产生对象。
如果只是定义,而未运行,被其它地方运行的函数引用时,则会出现undefined 提示。


[b]数据类型的类型字面值:[/b]


typeof (1) === "number" // true
typeof ("1") === "string" // true
typeof (null) === "object" // true
typeof (true) === "boolean" // true
typeof (undefined) === "undefined" // true
typeof ({}) === "object" // true
typeof (function(){}) === "function" // true




[size=medium][b]二、变量的声明[/b][/size]
[b]关于"="操作符:[/b]

[b][color=green]1、声明变量(直接量):[/color] [/b]
 var a = 10;

作用: 直接量定义会立即执行。

[b][color=green]2、声明函数:[/color][/b]
var fn = function(){
return new Date().getTime();
}

作用: 只定义,不运行。
解释:fn的值是有的。但fn内部的值没有生成对象。因为函数没运行。
如何运行函数: fn()


此外:

可以定义并立即执行的写法:


1、诸如alert(); 等可立即执行的函数。
2、(function(){})();


[size=medium][b]三、函数的定义与运行机制[/b][/size]

在函数内部定义的变量,运行时,首先会先解析定义的部分,再执行其它部分。
这是javascript的hoisting特性。


a =20;
c = 0;
fnt = function(a,c){
var d = function(){
c = a + b;
return c;
}
var b = 20;
var a = 10;
console.log(d()); // 30
}
fnt(a,c);
//d为函数,虽定义但未运行,运行时由于定义了内部变量(覆盖了重名的全局变量),故为30



a =20;
c = 0;
fnt = function(a,c){
var b = 20;
c = a + b;
var a = 10;
console.log(c); // 40
}
fnt(a,c);

//c 为直接量,定义即运行,故c=40;



—————————————

javascript 函数基础系列文章

[url=http://lixh1986.iteye.com/blog/1955314]1、JavaScript之变量的作用域[/url]
[url=http://lixh1986.iteye.com/blog/2028899]2、javascript之变量类型与变量声明及函数变量的运行机制[/url]
[url=http://lixh1986.iteye.com/blog/2317065l]2.1、javascript 之 undefined [/url]
[url=http://lixh1986.iteye.com/blog/1947017]3、javaScript之function定义[/url]
[url=http://lixh1986.iteye.com/blog/1896682]4、javascript之function的prototype对象[/url]
[url=http://lixh1986.iteye.com/blog/1891833]5、javascript之function的(closure)闭包特性[/url]
[url=http://lixh1986.iteye.com/blog/1960343]6、javascript之function的this[/url]
[url=http://lixh1986.iteye.com/blog/1943409]7、javascript之function的apply(), call()[/url]


___________


javascript 面向对象编程系列文章:

[url=http://lixh1986.iteye.com/blog/1958956]1、javaScript之面向对象编程[/url]
[url=http://lixh1986.iteye.com/blog/2332467]2、javascript之面向对象编程之属性继承[/url]
[url=http://lixh1986.iteye.com/blog/2348442]3、javascript之面向对象编程之原型继承[/url]


-


-
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2028899
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值