JavaScript--Function对象(函数)的声明和作用域
Funtion 封装了可重复使用的代码块对象,函数名是一个引用函数对象的变量
声明提前:在程序开始执行之前,将var 变量和function函数提前声明 但赋值并不会提前
它的三种创建方法:
创建1
function fun1(){
var num =10;
num++;
}
// 创建2
var fun2 = function(){// 将函数赋值给变量 声明不会提前
console.log(1);
}
// 创建3 new Funtion()
var fun3 = new Function("a","b","return a+b;");//所有形参必须放在""中
var fun4 = Function("a","b","return a+b;");
函数的提前声明:
/*f();//2
function f(){console.log(1)}
f();//2
function f(){console.log(2)}
f();//2
console.log(typeof(f));//function
var f = 100;
console.log(f);//100
console.log(typeof(f));//number
f();//报错,TypeError f是一个number类型的原始数据类型,并不是一个函数*/
执行这一段代码时:函数f()会提前声明 等同于:
function f(){console.log(1)}
function f(){console.log(2)}//使用同名函数后者会覆盖前者
f();//2
/*f();//2
f();//2
console.log(typeof(f));//function
var f = 100;//定义一个f 变量并赋值为10 这时f已经变成了number类型 不再是function
console.log(f);//100
console.log(typeof(f));//number
f();//报错,TypeError f是一个number类型的原始数据类型,并不是一个函数*/
作用域:
在js中变量是有作用域(scope)的 它限定了一个变量的可使用范围
全局作用域window:全局变量
函数作用域:局部变量 在函数中 没有用var关键字声明的变量是全局变量
而作用域链就是多级作用域连续引用形成的结果,
作用域链在程序运行中访问顺序是:先从局部变量也就是自己的作用域中查找若找不到此变量 再到父级作用域中去寻找变量的值
借用一段代码来搞清楚作用域链:

JavaScript--Function对象(函数)的声明和作用域的更多相关文章
- Javascript 变量、函数的声明
javascript变量 全局变量和局部变量 按照变量的作用域来区分,和大多数编程语言类似,javascript变量也分为全局变量和局部变量.全局变量的作用域是整个js文件,而局部变量的作用域是 ...
- JavaScript Function.apply() 函数详解
apply()函数用于调用当前函数functionObject,并可同时使用指定对象thisObj作为本次函数执行时函数内部的this指针引用. 该函数属于Function对象,所有主流浏览器均支持该 ...
- javascript中对象函数继承的概念
什么是函数对象?这个对象既是通常意义上的对象,又可以加上括号直接执行的函数. 产生函数对象的方式有两种:1.通过function关键字产生:var fn = function(){};2.实例化Fun ...
- JavaScript Function.call() 函数详解
语法 functionObject.call( [ thisObj [, arg1 [, arg2 [, args...]]]] ) call()函数用于调用当前函数functionObject,并可 ...
- javascript function对象
<html> <body> <script type="text/javascript"> Function.prototype.get_my_ ...
- javascript Arguments对象——函数的实际参数
在javascript函数体内,标识符arguments具有特殊含义.它是调用对象的一个特殊属性,用来引用Arguments对象.Arugments对象就像数组,注意这里只是像并不是哈. javasc ...
- javascript打印对象函数
//js对象打印函数 function writeObj(obj) { var description = ""; for (var i in obj) { var propert ...
- JavaScript基础知识(JSON、Function对象、原型、引用类型)
19.JSON 概念:JavaScript 对象表示法(JavaScript Object Notation),是一种轻量级的数据交换格式 特点:易于程序员编写和查看:易于计算机解析和生成 数据结构 ...
- Javascript脚本 :Function 对象的定义和使用
javascript Function 对象的定义 创建函数的语法:var myFunction=new Function(arg1,arg2,...agrN,body);agrN 为函数的参数,b ...
随机推荐
- OpenNebula概述
OpenNebula概述 OpenNebula是专门为云计算打造的开源系统,用户可以使用Xen.KVM.VMware等虚拟化软件一起打造企业云.利用OpenNebula可以轻松构建私有云.混合云.公开 ...
- pod install [!] Unable to find a specification for `XXX`
今天下载了别人的源码学习的时候,执行pod install报错如下: 解决办法: 更新下pod即可. pod update install成功.
- weblogic12.1.3安装
weblogic weblogic12.1.3安装 环境: centos7.5 ip: 192.168.0.94 1.安装jdk 2.安装 weblogic 下载.解压安装包 wls1213_dev. ...
- Java不写文件,LOAD DATA LOCAL INFILE大批量导入数据到MySQL的实现(转)
MySQL使用load data local infile 从文件中导入数据比insert语句要快,MySQL文档上说要快20倍左右.但是这个方法有个缺点,就是导入数据之前,必须要有文件,也就是说从文 ...
- 【Leetcode_easy】748. Shortest Completing Word
problem 748. Shortest Completing Word 题意: solution1: class Solution { public: string shortestComplet ...
- winform_textbox控件只能输入数字
//实现只限制输入数字事件 private void txtShowNum_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = tru ...
- opencv入门笔记
一.图片基本操作 1.1 显示图片 #include <opencv2/opencv.hpp> //头文件 using namespace cv; //包含cv命名空间 void main ...
- jqGrid常用方法
var jqGrid = $("#jqGrid"); // 获取选中行id[单行],test1就是最先一个行id var test1 = jqGrid.jqGrid("g ...
- Oracle(11g)详细安装步骤
最详细的Oracle安装步骤就在这里,话不多说直接给大家上安装Oracle的详细教程 如果没有安装包,可以先点击下载下载地址:http://download.oracle.com/otn/nt/o ...
- vue图片点击放大功能
因项目需求(ui框架element-ui),需要实现图片的点击放大,还要能旋转以及上下切换.当时第一反应,element-ui好像没有这样的组件,就想过自己写,但是那个旋转翻页上下切换感觉有点麻烦,不 ...