JavaScript注意点
2016-05-08 15:07
169 查看
1、使用JavaScript实现页面跳转 window.location.href =“url地址”; 或者 window.location =“url地址”;
2、javascript执行顺序:按文档流的顺序执行 (由上到下,先执行<head>中的【不包括$(function)/window.onload中的,因为这里的最后等页面加载完成再执行】,再执行<body>中的,以 代码段为单位),最后执行window.onload/$(function)中的 【$(function(){}是)$(document).ready(function(){
})的简写】
step 1. 读入第一个代码块。
step 2. 做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5。
step 3. 对var变量和function定义做“预编译处理”(永远不会报错的,因为只解析正确的声明)。但是并没有进行初始化与赋值
step 4. 执行代码段,有错则报错(比如变量未定义)。
step 5. 如果还有下一个代码段,则读入下一个代码段,重复step2。
step6. 结束。
根据HTML文档流的执行顺序,需要在页面元素渲染前执行的js代码应该放在<body>前面的<script>代码块中,而需要在页面元素加载完后的js放在</body>元素后面,body标签的onload事件是在最后执行的。
参考资料 :http://www.admin10000.com/document/3752.html
如果在同一个代码段中 前一行调用后面行定义的方法 可以调用成功(因为会把该代码段所有方法预处理),但是如果调用之后代码段定义的方法 会出错(因为后面的代码段还没有读取进来)
3 引入js文件和css文件的顺序
在网页开头引入js文件和css文件: js和css文件之间是没有顺序的 :比如easyui中先引入相关的js文件还是css文件都可以 ,都能出来效果
但是js文件之间 和css文件之间是有顺序的 :
比如说jquery文件应该放在其他js文件之前(js文件后面的会调用前面的,所以要有顺序 不然调用不到) css文件后面的会覆盖掉前面的 (所以注意样式的重复定义)
4、字符串转换成json 的三种方法:
1:
1,eval方式解析,恐怕这是最早的解析方式了。如下:
var result = eval('(' + data + ')'); data是字符串 result是转换结果。
记得别忘了str两旁的小括号。
分析:eval()的速度非常快,但是他可以编译以及执行任何javaScript程序,所以会存在安全问题。在使用eval()。来源必须是值得信赖的。需要使用更安全的json解析器。在服务器不严格的编码在json或者如果不严格验证的输入,就有可能提供无效的json或者载有危险的脚本,在eval()中执行脚本,释放恶意代码。
2,new Function形式,比较怪异哦。如下
3,使用全局的JSON对象。如下: (这个方法和$.post()方法中的json参数效果一样,如果json格式有问题会出错,验证格式可去www.bejson.com)
function strToJson(str){
上 面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript 的内建对象里面,前者变成了
Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。
2、javascript执行顺序:按文档流的顺序执行 (由上到下,先执行<head>中的【不包括$(function)/window.onload中的,因为这里的最后等页面加载完成再执行】,再执行<body>中的,以 代码段为单位),最后执行window.onload/$(function)中的 【$(function(){}是)$(document).ready(function(){
})的简写】
step 1. 读入第一个代码块。
step 2. 做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5。
step 3. 对var变量和function定义做“预编译处理”(永远不会报错的,因为只解析正确的声明)。但是并没有进行初始化与赋值
step 4. 执行代码段,有错则报错(比如变量未定义)。
step 5. 如果还有下一个代码段,则读入下一个代码段,重复step2。
step6. 结束。
根据HTML文档流的执行顺序,需要在页面元素渲染前执行的js代码应该放在<body>前面的<script>代码块中,而需要在页面元素加载完后的js放在</body>元素后面,body标签的onload事件是在最后执行的。
参考资料 :http://www.admin10000.com/document/3752.html
如果在同一个代码段中 前一行调用后面行定义的方法 可以调用成功(因为会把该代码段所有方法预处理),但是如果调用之后代码段定义的方法 会出错(因为后面的代码段还没有读取进来)
3 引入js文件和css文件的顺序
在网页开头引入js文件和css文件: js和css文件之间是没有顺序的 :比如easyui中先引入相关的js文件还是css文件都可以 ,都能出来效果
但是js文件之间 和css文件之间是有顺序的 :
比如说jquery文件应该放在其他js文件之前(js文件后面的会调用前面的,所以要有顺序 不然调用不到) css文件后面的会覆盖掉前面的 (所以注意样式的重复定义)
4、字符串转换成json 的三种方法:
1:
1,eval方式解析,恐怕这是最早的解析方式了。如下:
var result = eval('(' + data + ')'); data是字符串 result是转换结果。
记得别忘了str两旁的小括号。
分析:eval()的速度非常快,但是他可以编译以及执行任何javaScript程序,所以会存在安全问题。在使用eval()。来源必须是值得信赖的。需要使用更安全的json解析器。在服务器不严格的编码在json或者如果不严格验证的输入,就有可能提供无效的json或者载有危险的脚本,在eval()中执行脚本,释放恶意代码。
2,new Function形式,比较怪异哦。如下
function strToJson(str){ var json = (new Function("return " + str))(); return json; }
3,使用全局的JSON对象。如下: (这个方法和$.post()方法中的json参数效果一样,如果json格式有问题会出错,验证格式可去www.bejson.com)
function strToJson(str){
<span style="font-size:12px;"> return JSON.parse(str); }</span><span style="color:#ff0000;font-size: 18px;"> </span>注意:
上 面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript 的内建对象里面,前者变成了
Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。
相关文章推荐
- JSP中文乱码问题(get,post篇)
- js动态改变iframe高度自适应
- 《JavaScript入门篇》摘要
- JavaScript-观察者模式(publish/subscribe)
- jsp中获取不到servlet的cookie
- Ext.grid.Panel中stateId的作用
- js中获取当前时间
- 常用原生JS兼容性写法汇总
- js中的二进制操作相关类型和方法
- MJExtension(JSON到数据模型的自动转换)
- 1.ionic系列之初识ionic
- JavaScript相等和全等
- 常见排序算法(JS版)
- JSTL标签库:Remove标签Catch标签
- Gson解析复杂的json
- js在html中的加载顺序
- JavaScript类型&值&变量
- Prototype的JSON支持
- JavaScript-装饰器函数(Decorator)
- 百度地图API之JavaScript开源库2