十一国庆节 之 “变量与函数同名时,会输出谁?”
时间:2022-04-27
本文章向大家介绍十一国庆节 之 “变量与函数同名时,会输出谁?”,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
看这样一个题目:
b = function c() {
a = 1, b = 2, c = 3;
console.log(a); //1
console.log(b); //2
console.log(c); //fuction c(){...
};
b();
它的结果是什么?你想想再回答,这次我又答对了
答案是,
1,
2,
function c(){....
为什么是这样呢?其实也很简单,首先明确以下几个事实:
1、function之外的b是函数,function之内的b是一个全局变量;
2、js的变量和函数声明都会被保存到上下文对象中,也就是AO对象之中;
3、函数声明的优先级,高于,变量声明,但并不会覆盖它;
看下面这个demo:
var xx = function axx(){
console.log('1:'+typeof axx)
}
console.log('2:'+typeof axx)
xx();
输出是多少?
var xx = function axx(){...,这是一个命名表达式,但它的名字axx,只是在它所定义的作用域范围之内才是有效的。
所以回到最开始时的那个题目,b是一个没有使用var声明的变量,它的值是一个函数,这个函数的标识符,也就是函数名是c,所以它在自己的作用域之内是可以访问的,并且因为c是函数标识,所以同名的变量名c,不能覆盖同名的函数名c。
就这么简单。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 9.30面试:AOP+事务+JDK动态代理与cglib区别+Spring的aop如何切换底层创建代理对象的方式
- R语言实现基因组的可视化
- Linux实用命令大全(附思维导图)
- 二叉搜索树与python中self参数理解
- 需要了解的Python编码解码知识
- 程序员必备技能之markdown写作
- Python列表操作最全面总结
- Python 0基础开发游戏:打地鼠(详细教程)VS code版本
- Python经典编程题:字符串替换
- Python字典操作总结
- 纯代码系列:Python实现验证码图片(PIL库经典用法用法,爬虫12306思路)
- Python正则表达式快速学习
- 如何上传项目到GitHub
- MySQL查询优化-基于EXPLAIN
- Python操作SQLite数据库