一.变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域.变量提升即将变量声明提升到它所在作用域的最开始的部分.上个简历的例子如: 1 2 3 4 5 6 7 8 9 10 console.log(global); // undefined var global = 'global'; console.log(global); // global   function fn () { console.log(a); // un…
想在点击"终端控制"的时候能够开启多个窗口对多个终端进行管理: /**提交事件**/ $("#terminalControl").bind("click",function(){ $("#terminalControl").removeClass(); $("#terminalControl").addClass("btn_pointToPint " + $.cookie("c…
var $_GET = (function(){             var url = window.document.location.href.toString();//获得当前url地址并转换成字符串             var u = url.split("?");//以?来分割字符串,将?前后的值存到一个数组中             if(typeof(u[1]) == "string"){//获得?后面具体的请求参数值            …
首先纠正下,文章标题里的 “变量提升” 名词是随大流叫法,“变量提升” 改为 “标识符提升” 更准确.因为变量一般指使用 var 声明的标识符,JS 里使用 function 声明的标识符也存在提升(Hoisting). JS 存在变量提升,这个的设计其实是低劣的,或者是语言实现时的一个副作用.它允许变量不声明就可以访问,或声明在后使用在前.新手对于此则很迷惑,甚至许多使用JS多年老手也比较迷惑.但在 ES6 加入 let/const 后,变量Hoisting 就不存在了. 一. 变量未声明,直…
来看如下代码: function HelloJS(){ var array = [1,2,3,4,5]; for(var i in array){ } alert(i); } HelloJS(); alert(i); 此段代码运行后先执行HelloJS();,会先输出4,然后再执行alert(i);,执行alert(i);时会报i is not defined的错误. 根据变量提升,这段代码等同于如下代码: function HelloJS(){ var i: var array = [1,2,…
一.前言 Uncaught TypeError: ... is not a function function max(){}表示函数声明,可以放在代码的任何位置,也可以在任何地方成功调用: var max  = function(){};表示函数表达式,即将一个匿名函数赋值给一个变量,实现通过变量来调用这个匿名函数,但它需要在声明过后才能进行调用,如果调用在声明之前就会报如上红色字体的错误.而这在函数声明中不会出现这样的错误. 二.正文 (一).代码示例 //函数表达式 myFunc();//…
function functions(flag) { if (flag) { function getValue() { return 'a'; } } else { function getValue() { return 'b'; } } return getValue(); } console.log(function functions(true)); 请问这段代码会输出什么呢. 答案将永远是:b. 解释一下为什么,因为在js是没有块级作用域的,又因为函数声明提升的原因,上面的这段代码变…
JS的变量有两种,“全局变量”和“局部变量”. “全局变量”声明在函数外部,可供所有函数使用,(全局变量属于window)而“局部变量”声明在函数体内部,只能在定义该变量的函数体内使用. 1.全局变量:(1)直接在函数外部声明的变量   var a=3 (2)在任何位置上,声明变量时没有var关键字,而是直接赋值的变量均为全局变量     s=3 2.局部变量:(1)在函数内部声明的变量 (2)形参,参数变量天生就是局部变量 <script type="text/javascript&qu…
感谢原文作者:迟早会有猫 原文链接:https://www.cnblogs.com/SidselLoong/p/10515809.html 今天看js的变量提升问题,里面提到了函数提升.然后发现自己之前一直把函数声明和函数表达式弄错,导致函数提升出错 一.变量提升 console.log(a) var a=100 //undefined console.log(a)//100 提升后相当于 var a; //变量提升,全局作用域范围内,此时只是声明,并没有赋值 console.log(a); /…
今天看js的变量提升问题,里面提到了函数提升.然后发现自己之前一直把函数声明和函数表达式弄错,导致函数提升出错 一.变量提升 console.log(a) var a=100 //undefined console.log(a)//100 提升后相当于 var a; //变量提升,全局作用域范围内,此时只是声明,并没有赋值 console.log(a); //undefined a=100 //此时赋值 console.log(a) //100 二.函数提升 注意:js中创建函数有两种方式:函数…
如何理解js中的作用域,闭包,私有变量,this对象概念呢? 就从一道经典的面试题开始吧! 题目:创建10个<a>标签,点击时候弹出相应的序号 先思考一下,再打开看看 //先思考一下你会怎么写,是不是这样? 可是结果呢,弹出来的都是10,为啥? var i,a for(i=0;i<10;i++){ a=document.createElement('a') a.innerHTML=i+'<br>' a.addEventListener('click',function(eve…
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.好处:在出现大量程序相同的时候,可以封装为一个function,这样只用调用一次,就能执行很多语句.(1)语法:函数就是包裹在花括号中的代码块,前面使用了关键词 function:eg:function myFunction(){ //执行的代码}//调用.myFunction();<button onclick="myFunction()">点击</button>(2)参数function小括号中的参…
JS中常见的三种函数声明(statement)方式有这三种: // 函数表达式(function expression) var h = function () { // h } // 函数声明(function declaration) function h() { // h } // 构造函数(function constructor)function H() { // H } 先说三者的显著区别: 第一种声明方式也就是var声明方式,函数表达式,又叫做函数字面量(Function Lite…
(function(){...})() (function(){...}()) 这是两种js立即执行函数的常见写法. 基本概念: 函数声明:function fname(){...}; 使用function关键字声明一个函数,再指定一个函数名. 函数表达式:var fname=function(){...}; 使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予给一个变量. 匿名函数:function(){}; 使用function关键字声明一个函数,但未给函数命名.(匿名…
1.1.1函数的分类 函数声明式 :使用function声明函数,并指定函数名. 函数表达式:使用function声明函数,但未指定函数名. 函数表达式2.匿名函数,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等. 立即执行函数,两种写法.立即执行函数里面的函数必须是函数表达式(function(){})()        (function(){}())(function(){}())这样写的好处是在内部定义的变量不会跟外部的变量有冲突,达到保护内部变…
目录 序言 class 是一个特殊的函数 class 的工作原理 class 继承的原型链关系 参考 1.序言 ECMAScript 2015(ES6) 中引入的 JavaScript 类实质上是 JavaScript 现有的基于原型的继承的语法糖.类语法(class)不会为JavaScript引入新的面向对象的继承模型. 2.class 是一个特殊的函数 ES6 的 class 主要提供了更多方便的语法去创建老式的构造器函数.我们可以通过 typeof 得到其类型: class People…
摘要: javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( function(){-} )()和( function (){-} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此.要理解立即执行函数,需要先理解一些函数的基…
文章摘自https://my.oschina.net/u/2331760/blog/468672?p={{currentPage+1}} 摘要: javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( function(){-} )()和( function (){-} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名…
先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值,简单示例如下: var s1='"a" + 2'; //表达式var s2='{a:2}'; //语句alert(eval(s1)); //->'a2'alert(eval(s2)); //->und…
1.如果载入的2个js文件中有重名函数,那么调用的时候怎么分别调? 第二个文件载入无效. 2.checkbox jQuery对象的checked属性在选中时为checked,否则为undefined: DOM对象的checked属性在选中时为 true, 否则为 false. 3.本条内容摘自<JavaScript语言精粹>--电子工业出版社 定义函数的方式有两种:一种是函数声明,另一种是函数表达式. (1)函数声明: function funName(arg0,arg1,arg2) {   …
( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目 的,后来发现加括号的原因并非如此.要理解立即执行函数,需要先理解一些函数的基本概念. 函数声明.函数表达式.匿名函数 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnNam…
( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此.要理解立即执行函数,需要先理解一些函数的基本概念. 函数声明.函数表达式.匿名函数 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName…
[嵌套循环特点]                           外层循环转一次,内层循环转一圈              外层循环控制行数,内层循环控制每行元素个数             [做图形题思路]              1确定图形一共几行  极为外层的循环的次数             2确定每行有几种元素,代表有几个内层循环.             3 确定每种元素的个数,即为每个内层循环的次数                 tips:通常:找出每种元素个数,与行号的关…
[函数的声明及调用] 基础知识 1.函数声明的格式: function 函数名(参数1,参数2,....){ //函数体 return 结果: } >>>函数调用的格式: 直接调用:函数名(参数1的值,参数2的值,...) 事件调用:事件名=函数名(): 2.函数声明的几点强调: ① 函数名的声明,必须符合小驼峰法则(首字母小写,之后每个单词首字母大写): ② 参数列表,可以有参数,可以无参数.分别称为有参函数,无参函数: ③ 声明函数时的参数列表,称为"形参列表"(…
 一.JS中的函数 [关于注释] /** [文档注释]:开头两个*.写在函数上方,在调用函数时可以看到文档上方的描述信息. */   // 单行注释 /* 多行注释 */ 1.函数的声明及调用 (1)函数的声明格式 function 函数名(参数1,参数2,......){ //函数体代码 return 返回值; }     (2)函数的调用 ① 直接调用:函数名(参数1的值,参数2的值,......); ② 事件调用:直接在HTML标签中,直接使用事件名="函数名()"; eg. &…
JS中常见的两种函数声明(statement)方式有这两种: // 函数表达式(function expression) var h = function() { // h } // 函数声明(function declaration) function h() { // h } 先说两者的显著区别: 第一种声明方式也就是var声明方式, 函数只有在var语句声明之后才能被调用 第二种生命方式也就是function声明方式, 函数可以在function声明之前被调用 这是因为, 对第一种情况,…
一.bom对象 1screen对象 console.log(screen.width);// 屏幕宽度 console.log(screen.height);// 屏幕高度 console.log(screen.availWidth); //可用宽度 console.log(screen.availHeight); //可用高度=屏幕高度-底部任务栏 2location对象 完整的URL路径:协议://主机名(IP地址):端口号/文件路径?传递参数(name1=value1&name2=valu…
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此.要理解立即执行函数,需要先理解一些函数的基本概念.…
一.什么是"异步非堵塞式"? 这个名字听起来非常恶心难懂,但假设以 买内裤 这件事情来比喻运行程序的话就非常easy理解"异步非堵塞式"的涵义了. 比如你是一个CPU的线程.你须要去运行一段 买内裤的程序, 你所需运行的步骤大致例如以下, 到一个商店里问老板, 你们店里还有没有nb牌内裤? 买到内裤.穿上 去小卖店买点火腿回家喂狗 这时候.你作为一个线程,你可能会遇到几种状况或选择. 店里面没货了.老板一直不答应你(堵塞你),你也一直等着(同步),第三天有货了才告诉…
( function(){-} )() 和 ( function (){-} () ) 是两种javascript立即执行函数的常见写法,要理解立即执行函数,需要先理解一些函数的基本概念. 函数声明.函数表达式.匿名函数 函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名.参数列表和方法体,叫函数声明. 函数表达式:var fnName = function () {-};使用function关键字声明一个函数,但未给函数命名,最后将…