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 ...
随机推荐
- Android 摇一摇监听实现
package com.loaderman.androiddemo; import android.content.Context; import android.hardware.Sensor; i ...
- 【转载】 迁移学习(Transfer learning),多任务学习(Multitask learning)和端到端学习(End-to-end deep learning)
--------------------- 作者:bestrivern 来源:CSDN 原文:https://blog.csdn.net/bestrivern/article/details/8700 ...
- connections java.net.BindException: Address already in use_解决方案
一.问题描述 在Linux服务器(CentOS7系统)中配置并启动JMeter远程监控服务器资源所需的ServerAgent目录下的 startAgent.sh 文件时,系统出现异常提示,如 [roo ...
- Flutter常用命令和mac电脑常用命令
0. flutter create example_demo 新建flutter项目 1.flutter packages get 安装新增的包 2.flutter run 运行flutter项 ...
- 123457123456#0#-----com.threeapp.renZheDadishu02-----忍者版打地鼠
com.threeapp.renZheDadishu02-----忍者版打地鼠
- CentOS 端口和防火墙操作
Centos 7 端口和防火墙命令: 查看已经开放的端口:firewall-cmd --list-ports 开启端口:firewall-cmd --zone=public --add-port=80 ...
- 使用wsimport生成webservice客户端代码
服务端 package com.xc.webservice; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebServic ...
- mysql导入、导出 ( 带视图)
1创建账号授权 grant all privileges on jenkinsddbes.* to 'jenkinsddbes'@'%' identified by '1iN@Da12tA&* ...
- 【Leetcode_easy】665. Non-decreasing Array
problem 665. Non-decreasing Array 题意:是否能够将数组转换为非减数组. solution: 难点在于理解如何对需要修改的元素进行赋值: class Solution ...
- Mysql开启审计功能
第一种经验证,有效. 第一种用macfee的mysql审计插件. 下载地址:https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.4-72 ...