一.函数 每个函数都是 Function类型的实例,也具有属性和方法.由于函数也是一个对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定 1.函数的定义方式 (1).函数声明 function add(a, b) { return a + b; } 函数声明提升:在执行代码之前,会先读取函数声明,也就是说,可以把函数声明放在调用它的代码之后 fn(); function fn() {console.log(1)}   (2).函数表达式 var add = function(a…
变量:  存储数据的容器     1.声明        var   2.作用域       全局变量. 局部变量. 闭包(相对的全局变量):   3.类型         a.基本类型(undefined, null, boolean, number, string)   b.引用类型:(object, function),其实function 也是对象-->var a = new Function(alert('我也是对象'));   4. 类型转换    隐式转换(==, -, *, /,…
1.首先理解函数作用域 在JavaScript中,变量的定义并不是以代码块作为作用域的,而是以函数作用作用域的.也就是说,如果变量是在某个函数中定义的,那么它在函数以外的地方是不可见的.而如果该变量是定义在if 或者for这样的代码块中,它在代码块之外是可见的.另外,在JavaScript中,术语"全局变量"指的是定义在所有函数之外的变量,与之相对的是"局部变量",所指的是在某个函数中的变量.其中,函数内的代码可以像访问自己的局部变量那样访问全局变量,反之则不行.…
var func=function 和 function func()在意义上没有任何不同,但其解释优先级不同:后者会先于同一语句级的其他语句. 即: { var k = xx(); function xx(){return 5;} } 不会出错,而 { var k = xx(); var xx = function(){return 5;} } 则会出错. 为什么会这样呢?这就要引出javascript中的预解析机制来解释了. JavaScript解析过程分为两个阶段,一个是编译阶段,另外一个…
首先我们来看一段代码: <script> console.log(a); var a = 10; </script> 此时运行结果为   为什么会显示undefined呢?这就涉及到了预解析中的变量提升: 1.局部提升(变量)  会把变量声明分成两部分       1) 变量声明  只有这个部分发生了提升,提升至所在作用域的最前面       2) 变量赋值  在原位置: 接下来再看一段代码: <script> foo(); function foo(){ consol…
知识点总结 浏览器的解析方法 script 全局变量,全局函数 自上而下 函数 由里到外 "JS的解析器": 1)“找一些东西”:var function 参数 var a=未定义 =>所有的变量,在预解析时,赋一个值:未定义 fn1 = function fn1(){alert(2)} =>所有的函数,在预解析时,是整个函数块 function fn1(n1) {} =>这里的参数n1,相当于var n1 ,因此也是未定义 在预解析时,遇到重名的:只留一个,var和…
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> /* // 作用域: // 域:空间.范围.区域-- // 作用:读.写 script 全局变量.全局函数 自上而下 函数 由里到…
数组array 数组可以存储很多项,有顺序,很多项形成一个集合,就是数组. 数组字面量是:[] 如何获取数组中的数据:索引/下标,数组中的第一项的索引是从0开始的. ['kay', 'andy', 18, 19, true]数组可以存储多个值,也可以是不同数据类型但不建议使用! 存储的数组是要有意义的比如 name就只存名字,其他的元素18,19会把我们的数据给打乱! 创建数组与增删改查: // 创建数组 var arr = ['andy', 'kay', 'jack']; // 获取数组里的第…
hey,guys!我们一起总结一下JS预解析吧! 首先,我们得搞清楚JS预解析和JS逐行执行的关系.其实它们两并不冲突,一个例子轻松理解它们的关系: 你去酒店吃饭,吃饭前你得看下菜谱,点下菜(JS预解析),但吃的时候还是一口一口的吃(JS逐行执行)! OK,解决下面五个问题,JS预解析就算过了~~(前提:对JS变量作用域有清晰理解) 一.JS预解析是什么? 其实就是对程序要用到的材料(变量,函数)给一个初始值,并存到一个表中(我自己虚构的),当程序运行到那一行时,就来这个表看有没有初始值,没有就…
JS的预解析过程: 1,预解析 2,再逐行解读代码, 实例: ---------------------------- <script>        var name="xm";        var age=18;        function fn(argument){            console.log(name);            var name="xh";            var age=12;        }&l…