js中函数提升及var变量提示
其中,在javascript中,函数声明及var声明的变量会得到提升。但是函数声明会先于var声明的变量被提升。即便function写在后面。
看下面的例子:
var aa = 221;
function aa(){
alert(111);
}
console.log(aa); //221
说明了函数声明先被提升了。而后面的var aa声明覆盖了aa函数,所以打印出来的是 ------ 221。
上面的语句在浏览器解析的时候其实是这样的。
function aa(){
    alert(111);
}
var aa;
aa = 221;
console.log(aa);
这里补充一点,函数声明的函数名与普通对象的变量名没有什么区别(高级编程第三版)。说明函数名可以被变量覆盖。
function aa(){
       alert(111);
}
var aa = 221;
console.log(aa);  //
这样执行效果也是一样的。
解析:
function aa(){
    alert(111);
}
var aa;
aa = 221;
console.log(aa);
同时,function也是对象,说明可以在它的身上定义属性和方法。
在它身上定义的方法叫做类方法,或者叫静态方法。
只属于这个类所有。类的实例不能够调用。
例子:
function aa(){
    alert(111);
}
aa.bb = function(){
     alert('我是静态方法');
}
aa.bb();  //弹出“我是静态方法”
说明函数可以定义方法。
function aa(){
alert(111);
}
aa.bb = function(){
  alert('我是静态方法');
}
var a = new aa();  这句话弹出111,即运行了aa函数。
a.bb();   // Uncaught TypeError: a.bb is not a function(…)
说明在JS中类的实例不能调用类方法。
function aa(){
alert(111);
}
aa.bb = function(){
  alert('我是静态方法');
}
aa.c={
    cc:5
}
console.log(aa.c);   //Object {cc: 5}
给函数对象定义属性。
js中函数提升及var变量提示的更多相关文章
- js中函数声明先提升还是变量先提升
		根据官方书籍<你不知道的javascript>(上卷)中写道: "函数会首先被提升,然后才是变量". 例子: console.log(foo); function fo ... 
- js中的全局变量和静态变量的使用, js 的调试?- 如果js出错, js引擎 就会停止, 这会 导致 后面的 html中 refer 该函数时, 会报错 函数为定义!!
		效果里面的函数, 如show, hide,slideDown等, 这些都叫 "效果"函数, 但是里面可以包含动画, 也可以 不包含动画. 动画,是指 元素 的内容 是 逐渐 显示/ ... 
- 关于js中函数的调用问题
		js中函数的调用方法 1.直接调用 函数名(参数): 2.通过指向函数的变量去调用 例如: var myval = 函数名: 此刻 myval是指向函数的一个指针: myval(实际参数):此刻调用的 ... 
- JS中函数参数和函数返回值的理解
		函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ... 
- js中函数传参的情况
		<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ... 
- 对JS中函数的理解
		函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ... 
- JS中函数void()
		<a href="javascript:void(0)">hello</a>/* * JS中函数void()的运用大体是这种新式; * void()是运算符 ... 
- js中函数的参数为函数的情况即回调函数
		js中函数的参数可以是数组对象也可以是函数,当参数为函数时我们叫做回调函数 //定义回调函数function B() { console.log("函数B")setTimeout( ... 
- Javascript中函数提升和变量提升
		词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 具体步骤如下: 函数在运行的瞬间,生成一个活动对象(Active ... 
随机推荐
- 详细详解One Hot编码-附代码
			机器学习算法无法直接用于数据分类.数据分类必须转换为数字才能进一步进行. 在本教程中,你将发现如何将输入或输出的序列数据转换为一种热编码,以便于你在Python中深度学习的序列分类问题中使用.本教程分 ... 
- NodeJS中 Path 模块
			var path = require('path'); // 当发现有多个连续的斜杠时,会替换成一个: 当路径末尾包含斜杠时,会保留: // 在 Windows 系统会使用反斜杠. var p = p ... 
- bzoj 2733 永无乡 线段树
			题目: 支持两种操作: 合并两点所在的联通块 查询某点所在联通块内权值第k小. 题解 平衡树启发式合并随便搞一搞就好了. 我写了一个线段树合并 #include <cstdio> #inc ... 
- 2017.10.5北京清北综合强化班DAY5
			拼不出的数lost.in/.out/.cpp[问题描述]3 个元素的集合{5, 1,2} 的所有子集的和分别是0,1, 2, 3, 5, 6, 7, 8.发现最小的不能由该集合子集拼出的数字是4.现在 ... 
- bzoj 1113 海报pla
			Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的长与宽.其值 ... 
- 使用Visual Studio进行单元测试-Shim类中无法找到参数包含CancellationTokenSource的方法
			Shim类中无法找到参数包含CancellationTokenSource的方法,这句话有点绕口,看例子. 一.代码 public class CancellationDemo { public in ... 
- POJ3630(Trie树)
			Phone List Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26385 Accepted: 7957 Descr ... 
- java web项目创建
			https://www.cnblogs.com/kangjianwei101/p/5621738.html 
- Java常见设计模式之观察者模式
			在阎宏博士的<JAVA与模式>一书中开头是这样描述观察者(Observer)模式的: 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Mo ... 
- RPG游戏地牢设计的29个要点
			转自:http://www.gameres.com/491660.html Troy 是一名 RPG 开发者,以整理了一些自己开发地下城 RPG 的经验,开发者不妨参考一下: 1.地下城应该有个地方无 ... 
