javaScript基础

1,有六种数据类型:Number,null,Boolean,String,Undefined,Object。前五种为基础类型,值传递。后一种是对象,引用传递。
   当操作保存着对象的某个变量时,操作的是引用;当操作的是对象的属性时,操作的是对象本身。


2,function是函数标识符,入参数量可变,可用arguments数组对象来访问入参;
   如果需要递归,请使用callee属性指代函数本身,但是严格模式这样用会出错;caller指向调用当前函数的函数。
   函数的入参传递是值传递,包括对象作为入参的情况。改变入参的值不会影响外部的对象,改变入参的属性会影响外部的对象。
   入参与外部对象是同一个对象的两个引用。
   this与java略微不同,指向当前函数的执行环境。
   使用函数的apply(Object,array)和call()方法可以扩充函数的执行环境;bind(Object)可以绑定执行环境生成一个函数(和原来的函数不是同一个)。


3,全等操作符“===”表示变量未经转换就已经相当,建议使用;
   “==”包含转换后相等的情况,如"2" == 2返回true.“!==”为非全等操作符。


4,页面的加载是按照header然后body来加载的,所以<script>标签最好放在body标签的最末端,让页面先显示再加载脚本。


5,没有变量标识符var修饰的变量时全局变量,严格模式下这样做会出错,不建议使用;
   if()和for()语句括号中中定义的变量申明会被添加到当前的执行环境;
   关于上面这一点是由于JS没有{}这样的块级作用域,可以用匿名函数产生仿块级作用域;


6,数组Array有队列和堆栈的用法,分别为push、pop、shift、unshift方法;
   sort方法按照toString的返回值来排序,也可传入比较函数给sort;
   concat()将参数中的数组添加到本数组的末尾;
   slice(beginIndex, endIndex)截取原数组中的某些项;
   splice(startIndex, count, args)即可删除项,也能添加项,针对的都是原数组。
   很多种的遍历方法。


7,Global对象:
   不属于任何其他对象的属性和方法都是他的方法。实际获取不到,由window对象充当。


8,属性包含数据属性和访问器属性。
   数据属性包含:
   Configurable:是否能删除和重新定义属性;
   Enumerable:表示是否能通过for-in循环返回属性;
   Writable:表示能否修改属性的数据值;
   Value:包含这个属性的数据值,默认值为undefined。
   上面三个的默认值都是true,只能用Object.defineProperty(object, name, {键值对});修改。使用了这个方法属性值默认就是false。
   访问器属性多了两个set和get属性,这两个属性一般都是函数,没有Writable和value属性,一般通过数据属性间接修改。
   
9,闭包:有权访问另一个函数作用域中的变量的函数(深刻理解函数作为返回值,本身并未被任何一般对象调用,所以没有call和apply改变时,他的执行对象是window)。
   在函数内部定义函数就会产生闭包,不一定要返回这个函数(可作为对象的一部分返回),引用函数不会产生闭包;
   弊端:1,这个函数会携带另一个函数的作用域(闭包的本质),内存比一般函数占用多,所以要少用。
        2,闭包只能取得包含函数中任何变量的最后一个值(解决这个办法是创建一个匿名函数来创建被引用对象的一个副本)。
   闭包的作用域链包含自己的活动对象、上层函数的活动对象、全局变量对象,但是他没法访问上层函数的上层函数活动对象。 
   如果在最外层,则所有的局部变量都成为window的属性,也就变成了属性变量。如果在函数内部则必须显性指定this.var才会成为自己的属性变量,访问时可以省略this,但赋值则必   须有this,否则等于赋值给了一个局部变量,或者全局变量,但不会是属性变量.
   
10,模仿块级作用域:
(function(){
    //这里就是块级作用域,function是一个关键字,作为函数申明的开始,所以后面不能跟圆括号,需要用圆括号括起来才能使用
 })();


11,离线缓存:文件缓存用Manifest指定;Storage、数据库都可以缓存数据;
cookie是客户端的请求头缓存,每次请求都会带上,包括名字,有效期,域名,路径(域名里面的具体位置)等;
cookie的取消通过设置过期时间确定,客户端有同域名cookie个数限制,可以用子cookie设置多个cookie;
客户端总是存在被破解的风险,重要数据采取session缓存,缓存在服务端。


12,词法作用域:当定义了一个函数后,当前的作用域就会被保存下来,并且成为函数内部状态的一部分;
    词法作用域的函数中遇到既不是形参也不是函数内部定义的局部变量的变量时,去函数定义时的环境中查询;
    动态域的函数中遇到既不是形参也不是函数内部定义的局部变量的变量时,到函数调用时的环境中查。
动态作用域就是整个程序运行的时候只有一个env。
什么是env呢?env就是一组binding。
binding是什么呢?binding就是从identifer到value的映射。
dynamic scope在每次函数求值的时候都会在这唯一的一个env里查询或更新。
而static scope是每次函数求值的时候都创建一个新的env,包含了函数定义时候的所能访问到的各种binding。这个新的env连同那个函数一起,俗称闭包Closure。



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值