博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript 函数的变量与作用域
阅读量:6954 次
发布时间:2019-06-27

本文共 1221 字,大约阅读时间需要 4 分钟。

函数内部变量的几种特别情况:

1、全局变量与局部变量

函数内部变量声明带var关键字:

1 function global(){2      var name = "lilei"  //带var的变量声明,仍是局部变量,外部找不到3 }4 global();5 console.log(name) //无法打印

函数内部变量声明不带var关键字:

1 function global(){2     name = "lilei" //此时是全局变量3 }4 global();5 console.log(name) //'lilei'

 

2、函数内部变量提升

1 function test(){2     console.log(v);3     var v = 1;4 }5 test(); //undefined

上述代码等同于 

1 function test(){2     var v = undefined;3     console.log(v);4     v =1;5         }6 test()//undefiend

注意:变量声明会提升到函数顶部,但是变量赋值还是在原来的位置

3、函数作用域和变量声明提升的结合

var name = 'Nelsen'function global(){    console.log(name)}global(); //'Nelsen'

函数内部没有声明name,也没有初始化,此时函数会沿着作用域链查找到全局作用域,看是否有同名的变量声明,有则返回改初始化值

1 var name = 'Nelsen';2 function global(){3     console.log(name)4     var name;5 }6 global(); //undefined

尽管此时函数外部也声明name并初始化,函数内部声明了name阻断了继续向外部查找同名变量,所以返回的是默认的undefined

3、javascript 引擎分析代码的三个步骤

 ①、声明并初始化参数,

 ②、声明局部变量,但不是初始化他们,

 ③、声明并初始化函数

//变量在声明之前是没有值的

1 var name = 'Nelsen';2 function test2(){3       console.log(name)4       var name;5 }6 test2()  //undefined

但是如果变量作为参数传入,此时变量就有值了

1 var name = 'Nelsen';2 function test2( name ){3      console.log(name)4      var name;5 }6 test2("Nelsen")    //Nelsen

 

转载于:https://www.cnblogs.com/Nelsen8/p/7076745.html

你可能感兴趣的文章
正则表达式
查看>>
关于直播视频格式和浏览器兼容性历史的来龙去脉
查看>>
是的,InfoQ正在招聘技术编辑!跟对的人,一起做喜欢的事!
查看>>
vue2+vue-cli,dis文件加载出错解决方案
查看>>
立下“去O”Flag的AWS,悄悄修炼了哪些内功?
查看>>
关于团队建设,穆帅能教我们什么?
查看>>
2019 SRE 调查报告:事故处理是主要工作,SRE 压力山大
查看>>
xpath学习
查看>>
Java工程师的成长路线图是什么?
查看>>
JavaOne 2016——首日亮点
查看>>
EDU_BOOK 开发总结
查看>>
简单的支持网页画框拖拽缩放功能的js插件
查看>>
使用 ES2015 开发 Angular1.x 应用指南
查看>>
密码学协议 门限
查看>>
true or false in JavaScript
查看>>
Android学习笔记6:使用Intent1
查看>>
js实现继承的几种方式
查看>>
[LintCode/LeetCode] Two Strings are Anagrams/Valid Anagram
查看>>
Consul入门03 - 注册服务
查看>>
[Centos]necessary tools for newbie
查看>>