`

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

阅读更多
一、Javascript 中的数据类型

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

-

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


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


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

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


数据类型的类型字面值:

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





二、变量的声明
关于"="操作符:

1、声明变量(直接量):
 var a = 10;

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

2、声明函数:
var fn = function(){
  return new Date().getTime();
}

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


此外:

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


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



三、函数的定义与运行机制

在函数内部定义的变量,运行时,首先会先解析定义的部分,再执行其它部分。
这是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 函数基础系列文章

1、JavaScript之变量的作用域
2、javascript之变量类型与变量声明及函数变量的运行机制
2.1、javascript 之 undefined
3、javaScript之function定义
4、javascript之function的prototype对象
5、javascript之function的(closure)闭包特性
6、javascript之function的this   
7、javascript之function的apply(), call()



___________


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

    1、javaScript之面向对象编程
    2、javascript之面向对象编程之属性继承
    3、javascript之面向对象编程之原型继承 
   

-






-
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2028899













   
分享到:
评论

相关推荐

    深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解

    1、JavaScript中定义函数有2钟方法:  1-1.函数声明: 代码如下:function funcName(arg1,arg2,arg3){ //函数体} ①name属性:可读取函数名。非标准,浏览器支持:FF、Chrome、safari、Opera。 ②函数声明提升:指...

    JavaScript中变量提升机制示例详解

    JavaScript的变量提升有两种,用var声明的变量以及用function声明的变量。 用var声明的变量 我们先来看下面这段代码,a的值是多少 代码1 console.log(a); var a; 按照以往编程语言的思路来看,代码自上而下运行,...

    Javascript核心读书有感之类型、值和变量

    计算机程序的运行需要对值(value)比如数字3.14或者文本”hello world”进行操作,在编程语言中,能够表示并操作的值的类型叫做数据类型(type),编程语言最基本的特性就是主持多种数据类型。当程序需要将值保持起来以...

    JavaScript王者归来part.1 总数2

     6.1.1.1 声明式函数定义与函数表达式及其例子   6.1.1.2 JavaScript函数的奥妙——魔法代码   6.1.2 函数的调用   6.2 函数的参数   6.2.1 形参与实参   6.2.2 Arguments对象   6.2.2.1 一个使用...

    AMF-JavaScript 后台管理框架 v1.0

    有效解决了使用AJAX单一dom加载模式过多卡机,变量、函数冲突错乱等问题。保持各dom之间既"分离"又可联系。 04) 标签: 超强的多标签窗口运行管理模式,无限极的左栏分类。 05) 扩展: 拥有无敌的用户扩展能力与...

    Javascript 垃圾收集机制介绍理解

    举例来说,局部变量只存在于函数内部,程序会为局部变量在栈内存或堆内存中分配对应的存储空间,当函数运行结束,局部变量所占用的内存就没有存在的必要了,这时程序会释放局部变量所占用的内存供其他变量使用。...

    php网络开发完全手册

    4.2.7 变量检测函数isset与变量释放 4.2.7 函数unset 66 4.2.8 随机函数rand与srand 66 4.3 关于引用的解释 67 4.3.1 对变量的引用 67 4.3.2 对函数的引用 68 4.3.3 引用的释放 68 4.4 小结 69 第5章 PHP中类的应用 ...

    深入解读JavaScript中的Hoisting机制

    javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面。 先看一段代码 var v = "hello"; (function(){ console.log(v); var v = "world"; })(); ...

    AMF-JavaScript 后台管理框架.7z

    有效解决了使用AJAX单一Dom加载模式过多卡机,变量、函数冲突错乱等问题。保持各Dom之间既"分离"又可联系。 04) 标签: 超强的多标签窗口运行管理模式,无限极的左栏分类。 05) 扩展: 拥有无敌的用户扩展能力与插件...

    JavaScript创建闭包的两种方式的优劣与区别分析

    在JavaScript内部运行机制下他们有什么区别?用哪种方式创建比较好?它与其它方式创建的闭包相比有什么优势? 我是这样理解的: 区别: 第一个:子方法可以共享变量 第二个:内部子方法共享变量 比较: 我认为...

    通过JS运行机制的角度说说作用域

    任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围。JS中的作用域、闭包、this机制和原型往往是最难理解的概念之一。笔者将通过几篇文章和大家谈谈自己的理解,希望对大家的学习有一些...

    python入门到高级全栈工程师培训 第3期 附课件代码

    03 风湿理论之函数即变量 04 函数递归 05 函数递归补充 第16章 01 上节课回顾 02 函数作用域 03 函数作用域补充 04 匿名函数 05 函数式编程介绍 06 函数式编程尾递归调用优化 07 map函数 08 map函数filter函数 09 ...

    关于JavaScript定义类和对象的几种方式

    其实很简单,看一看JavaScript运行机制就会明白。我们可以把这种现象看做“预声明”。但是如果稍微深究一下,会明白得更透彻。 这里其实涉及到对象属性绑定机制。因为所有JavaScript函数都是一个对象。在函数里声明...

    PHP和MySQL Web开发第4版pdf以及源码

    1.7 检查变量类型 1.7.1 PHP的数据类型 1.7.2 类型强度 1.7.3 类型转换 1.7.4 可变变量 1.8 声明和使用常量 1.9 理解变量的作用域 1.10 使用操作符 1.10.1 算术操作符 1.10.2 字符串操作符 1.10.3 赋值操作符 ...

    PHP和MySQL WEB开发(第4版)

    1.7 检查变量类型 1.7.1 PHP的数据类型 1.7.2 类型强度 1.7.3 类型转换 1.7.4 可变变量 1.8 声明和使用常量 1.9 理解变量的作用域 1.10 使用操作符 1.10.1 算术操作符 1.10.2 字符串操作符 1.10.3 赋值操作符 1.10.4...

    PHP和MySQL Web开发第4版

    1.7 检查变量类型 1.7.1 PHP的数据类型 1.7.2 类型强度 1.7.3 类型转换 1.7.4 可变变量 1.8 声明和使用常量 1.9 理解变量的作用域 1.10 使用操作符 1.10.1 算术操作符 1.10.2 字符串操作符 1.10.3 赋值操作符 ...

    为什么说JavaScript预解释是一种毫无节操的机制详析

    JavaScript是一门解释型的语言 , 想要运行JavaScript代码需要两个阶段 编译阶段: 编译阶段就是我们常说的JavaScript预解释(预处理)阶段,在这个阶段JavaScript解释器将完成把JavaScript脚本代码转换到字节码 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——变量的应用 72 实例041 打印系统环境变量信息print_r($_ENV) 73 实例042 使用可变变量输出“I Like PHP!” 73 实例...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例038 动态输出JavaScript代码 69 实例039 当数字遇到了字符串 70 实例040 PHP程序员的基础——变量的应用 72 实例041 打印系统环境变量信息print_r($_ENV) 73 实例042 使用可变变量输出“I Like PHP!” 73 实例...

    精通JS脚本之ExtJS框架.part2.rar

    本书共分17章,分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、...

Global site tag (gtag.js) - Google Analytics