【JavaScript高级进阶】JavaScript变量/函数提升的细节总结
// 测试1 console.log('----------test1--------------'); console.log(global); // undefined var global = 'hahaha'; console.log(global); // hahaha function fn(){ console.log(a); // undefined var a = 'aaa'; console.log(a); // aaa } // 如果一个变量没有定义的话就去输出,就会报出错误 //console.log(a); // error : undefined fn(); // 代码执行思路解析 /*var global; // 变量提升,全局作用域范围内,此时只是声明,并没有赋值 console.log(global); // undefined global = 'hahaha'; // 此时给变量赋值 console.log(global); // 输出已经赋值过的global变量 function fn(){ var a; // 变量提升为函数作用域范围内 console.log(a); a = 'aaa'; console.log(a); } fn();*/ // 测试2 : 函数提升 console.log("------------------函数提升测试-----------------"); console.log(f1); // [Function: f1] console.log(f2); // undefined function f1(){ // 这块代码会自动函数提升,整个代码块提升到文件的最开始部分 } var f2 = function(){ } console.log(f2); // 测试3 console.log("------------test3---------------"); // 第一步会先去执行f1()函数,执行完毕这个函数之后开始打印输出这个函数的返回值 console.log(f1()); // undefined 123456hahaha function f1(){ console.log('aaa'); // aaa return '123456hahaha'; } console.log(f4); // var f4 undefined var f4 = function(){ console.log('f4 executed!'); return 'f4 hahaha!'; } console.log(f4, typeof f4); // 这里得到的实际上是一个函数 // 测试4 console.log('-------------test4------------'); console.log(aaa); // undefined aaa = '987654321'; // 987654321 console.log(aaa); var aaa = '123456789'; console.log(aaa); // 123456789 var aaa = '789'; console.log(aaa); // 789 // 测试5 console.log('--------------test5----------------'); var a = '12346789'; (function(){ // 这里的a默认是回去寻找全局作用域里面的a变量 console.log(a); /// error : a is not defined a = '113579'; var b = 'bbb'; console.log(a); })(); // 测试6 // 在方法外边不加上一个var是不能来定义变量的 //01. 都加var,在方法内则是局部变量,在方法外则是全局变量。 //02. 在方法内,加var为局部变量,不加var则是全局变量(在执行当前方法之后) //console.log(bianliang); // error : is not defined console.log('-----------------test6-----------------'); function test(){ //console.log(shuchubianliang); // error : is not defined } test(); var aaaa = 'I\'m a in all' function test1 () { // 相当于是var a, 然后输出a的值,当然是undefined console.log(aaaa) //console.log(window.a) var a = 'I\'m a in test1' console.log(a) } test1() // JavaScript会把作用域里的所有变量和函数提到函数的顶部声明 // JavaScript会使用undefined缺省值创建变量a console.log(aaaaaaa); // error var aaaaaaa = '11'; console.log('------------test7-------------'); //思考题: 请问下面的结果是什么? 为什么? 写下你的答案 show(); var a = true; if( a ){ function show(){ console.log( 1 ); } }else { function show(){ console.log( 2 ); } } //函数声明, 形如: function show(){ console.log( '函数声明方式' ); } // 会被提升为全局 //函数表达式, 形如: var show = function(){ console.log( '表达式方式' ); } // 不会被提升为全局的
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Vue+Django+MySQL搭建指南(个人全栈快速开发)
前言:本文适合有一定Vue或Django基础的开发者阅读,文中不会特别强调技术细节,只强调搭建的流程和配置,若有技术细节不懂请自行谷歌。 一 技术栈选择 前端Vue的所有技术栈: vue2 + vuex + vue-router + webpack UI库: element-ui 网络请求:axios 前端脚手架构建工具:vue-cli 后端技术栈:Python+Django 数据库: MySQL 前端技术栈选择原因:Vue是如今最火的MVVM框架之一,它的优势是双向数据绑定、文件组件化、生态较完善等。 后端技术栈选择原因:Django是基于Python的一款轻量级的后端框架,适合个人全栈快速开发,我青睐于它的原因是它的ORM方便高效、配置简单清晰、自带token等。 二 项目初始化 本项目的系统环境是:Windows 本项目的开发环境是:Node 8.11.2 + Vue 2.9.3 + Python 2.7.15 + Django 1.11.6 配置开发环境: (1)安装Node.js和Python (2)安装Django: $ pip install Django==1.11.6...
- 下一篇
Selenium + C# 实现模拟百度贴吧签到 2
通过上文的例子,我们对Selenium的用法有了一个简单的印象。接下去我们还是基于这个组件进行模拟百度贴吧签到的功能。 逻辑分析 1、登陆 2、得到关注的贴吧 3、签到 登陆首页 首页.png 点击登陆按钮 点击登陆png 输入用户名和密码 输入用户名密码.png 检测异常登录,手机认证 手机验证.png 登陆代码说明 public static void Login(string userName, string pwd) { var driver = new ChromeDriver(); driver.Manage().Window.Maximize();//浏览器最大化 driver.Navigate().GoToUrl("https://www.baidu.com"); oldwin = driver.CurrentWindowHandle;//首页签句柄 driver.FindElement(By.XPath("//*[@id=\"u1\"]/a[7]")).Click();//点击登陆 /*隐式等待设置的内容在driver的整个生命周期都有效,所以实际使用过程当中有弊端。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7