js提升行为
2017-03-21 14:26
183 查看
1.js中变量声明提升,函数声明整体提升
2.若变量声明和函数声明重名了,一定是函数声明覆盖变量声明
3.js是解释型语言,即编译一次,执行一次,预编译大部分发生在函数执行前
4.预编译阶段发生变量声明和函数声明,没有初始化行为(赋值),匿名函数不参与预编译只在解释执行阶段才会进行变量初始化
5.预编译函数执行前
a.创建AO对象(active objec)
b.查找函数形参及函数内变量声明,形参及变量名作为AO对象的属性,值为undefined
c.实参形参相统一,实参值赋给形参
d.查找函数声明,函数名作为AO对象的属性,值为函数引用
预编译(脚本代码块script执行前)
1.查找全局变量声明(包括隐式全局变量声明,省略var声明),变量名作为全局对象的属性,值为undefined
2.查找函数声明,函数名作为全局对象的属性,值为函数引用
前端跨域问题
跨域:只要协议、域名、端口有任何一个不同,都为不同域
1.若协议和端口造成的跨域问题前端不能解决
2.域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip,地址对应着两个域是否在一个ip上
浏览器有同源策略
1.是不能通过ajax的方法去请求不同源中的文档
2.是浏览器中不同域的框架之间是不能进行js的交互操作,不同的框架之间可以获取window对象,但是无法获取相应的属性和方法
3.通过document.domain跨域,可以使用这个将域名设置成相同的,但是要注意,只能把document.domain设置成自身更高一级的父域,且主域必须相同
js中的||将返回第一个不为false的那个值(可以是对象),或者返回最后一个值(若全部都为false的话)
2.若变量声明和函数声明重名了,一定是函数声明覆盖变量声明
3.js是解释型语言,即编译一次,执行一次,预编译大部分发生在函数执行前
4.预编译阶段发生变量声明和函数声明,没有初始化行为(赋值),匿名函数不参与预编译只在解释执行阶段才会进行变量初始化
5.预编译函数执行前
a.创建AO对象(active objec)
b.查找函数形参及函数内变量声明,形参及变量名作为AO对象的属性,值为undefined
c.实参形参相统一,实参值赋给形参
d.查找函数声明,函数名作为AO对象的属性,值为函数引用
预编译(脚本代码块script执行前)
1.查找全局变量声明(包括隐式全局变量声明,省略var声明),变量名作为全局对象的属性,值为undefined
2.查找函数声明,函数名作为全局对象的属性,值为函数引用
前端跨域问题
跨域:只要协议、域名、端口有任何一个不同,都为不同域
1.若协议和端口造成的跨域问题前端不能解决
2.域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip,地址对应着两个域是否在一个ip上
浏览器有同源策略
1.是不能通过ajax的方法去请求不同源中的文档
2.是浏览器中不同域的框架之间是不能进行js的交互操作,不同的框架之间可以获取window对象,但是无法获取相应的属性和方法
3.通过document.domain跨域,可以使用这个将域名设置成相同的,但是要注意,只能把document.domain设置成自身更高一级的父域,且主域必须相同
js中的||将返回第一个不为false的那个值(可以是对象),或者返回最后一个值(若全部都为false的话)
相关文章推荐
- 第7章-使用ORM类库Mongoose提升你的Node.js数据-7.9.修改原型的行为
- js 停止事件冒泡 阻止浏览器的默认行为(阻止超连接 # )
- JS实现根据用户行为延时提交
- 结构/表现/行为完全分离的选项卡(jquery版和原生JS版)
- js性能提升建议
- js阻止浏览器的默认行为以及停止事件冒泡(用JQuery实现回车提交,兼容IE、FF浏览器)
- JS直接实现点击下载某文件,激活IE另存为行为
- 结构/表现/行为完全分离的选项卡(jQ版和原生JS版)
- js 小技巧之取消默认行为
- js编程习惯提升点1
- FireFox 继续优化 JS处理性能再度大幅提升
- 实现lightBox时的样式与行为分离减少JS第1/2页
- 怎样提升windows7命令行为管理员权限运行一些特殊命令
- 百度:一切有益于用户体验的行为都有助于提升网站权重
- js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
- js使用confirm对用户的行为进行判断 和prompt
- js 停止事件冒泡 阻止浏览器的默认行为(阻止超连接 # )
- 实现lightBox时的样式与行为分离减少JS第1/2页
- 结构/表现/行为完全分离的选项卡(jQ版和原生JS版)
- 提升JS性能:将递归转换为迭代