首先,ECMAScript中的数据类型分为基本类型.引用类型,基本类型的访问操作是按值的.引用类型的值是保存在内存中的对象,操作对象时,实际上操作的是对象的引用,而非对象自身.“javascript高级程序设计”中的描述是“当复制保存着对象的某个变量时,操作的是对象的引用.但在为对象添加属性时,操作的是实际的对象”,下面从数据复制来看下: var num1 = 12; var num2 = num1; num2 = 13; console.log(num1); console.log(num2)…
函数参数 函数的()中指定一个或多个形参(形式参数),多个形参之间用,号隔开,声明形参相当于在函数内部声明了对应的变量,但不赋值.在调用时在()中指定实参  调用时解析器不会检查实参类型.数量,实参可以是任意的数据类型. 函数返回值 使用return来设置函数的返回值,作为函数的执行结果来返回 return后可以跟任意类型的值 语法:return 值 function sum(a,b,c){ var d = a + b + c; return d; } var result = sum(1,2,…
变量既可以是全局的,也可以是局部的. 全局变量可以在脚本的任何位置被引用.一旦你在脚本里声明了一个全局变量,就可以从这个脚本中的任何位置——包括函数内部引用它.全局变量的作用域是整个脚本. 局部变量只存在于声明它的那个函数的内部,在那个函数的外部是无法引用它的.局部变量的作用域仅限于某个特定的函数. 注意:在js中块级别中用var声明的变量也是全局变量. 如果在一个函数中使用了var声明一个变量,那么这个变量就是一个局部变量,它只存在于函数的上下文中.如果没用使用var声明一个变量,而是直接写了…
基本类型:Undefind Null Boolean Number String 引用类型: 对象 在操作对象时,实际上实在操作对象的引用而不是实际的对象.为此,引用类型的值是按引用访问的. 从一个变量向另一个变量赋值引用类型的值,同样也会将存储在对象中的值赋值一份放到为新变量分配的空间中.不同的是,这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一个对象 <script> var arr = {name:"jiayu"} doSomeThing(arr); con…
为什么要写这篇文章呢?主要是给自己提个醒,js的水很深,需要小心点儿才能趟过去,更何况自己不是专业人士,那就得更加小心了. 看下面的js代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>javascript中变量的作用域</title> </head> <body> <script> for (var…
js学习之变量.作用域和内存问题 标签(空格分隔): javascript 变量 1.基本类型和引用类型: 基本类型值:Undefined, Null, Boolean, Number, String; 特点: 在内存中占据着固定的地方和大小 从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本 引用类型值: 是指那些可能由多个值够成的对象 特点: 引用类型的值是对象,保存在内存堆中 包含引用类型值的变量复制引用类型的值,复制的实际是指针,因此两个变量最终都指向同一个对象 参数传递 所…
(function(){ a = 5; alert(window.a); var a = 10; alert(a); })(); 结果: undefined 10 代码等同于下面 var a = undefined; //定义全局变量 (function(){ var a; // a = 5; // a = 5;但是被局部变量覆盖,这时候的a是局部变量 alert(window.a); //a = undefined; 试图访问全局变量a,可是并没有赋值 a = 10; //依然是局部变量a a…
js不支持块级变量作用域,而是包含它们的函数的作用域, 例如: function query() { ; ; i < ; i++) { var b = i; } return b + a; } var q = query(); alert(q);// 9 + 1 = 10 也包括在Catch块 function test() { var a= 'a', b = []; b.push(a); try { throw 'exception'; } catch (e) { a = 'c'; } b.p…
js代码执行顺序/全局&私有变量/作用域链 <script> /* 浏览器提供全局作用域(js执行环境)(栈内存) --> 1,预解释(仅带var的可以): 声明+定义 1.普通变量: 仅声明 2.函数的预解释 声明+定义 --> 2,代码从上到下执行 函数的执行 - 1.形参赋值 - 2.进行私有作用域预解释 - 3.私有作用域代码从上到下执行 全局变量: 在全局环境中(预解释产生的变量) 私有变量: - 1. 在私有作用域重声明的变量 - 2. 函数的形参 作用域链:…
被这个问题困惑了很久,终于在网上找到了答案,感谢~ 现在分享给大家~ js中如何让一个for循环走完之后,再去执行下面的语句? 这涉及for循环变量作用域的问题,js中作用域只有函数作用域和全局作用域,在函数体内使用var 定义的变量,会被提到函数开始处进行定义,作用域为整个函数,常见的误区如下: var a=[]; for(var i = 0;i<10;i++){ var q = i; a[i]=function(){console.log(q)} } a[0]() 其中,由于for循环并不是…