习术-JS

原创 2015年11月19日 20:42:20

放下对象

要理解 JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系。JavaScript 就是把数据和代码都简化到最原始的程度。

所谓“对象化”,就是可以将数据和代码组织成复杂结构的能力。JavaScript 中只有 object 类型和 function 类型提供了对象化的能力。

JavaScript 中只有 object 类型和 function 类型提供了对象化的能力。

执行顺序

情景分析

情景1

var myfunc = function ()
{
    alert("hello");
};
myfunc(); //第一次调用 myfunc,输出 hello
myfunc = function ()
{
    alert("yeah");
};
myfunc(); //第二次调用 myfunc,将输出 yeah

情景2

function myfunc ()
{
    alert("hello");
};
myfunc(); //这里调用 myfunc,输出 yeah 而不是 hello
function myfunc ()
{
    alert("yeah");
};
myfunc(); //这里调用 myfunc,当然输出 yeah

JavaScript 执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。
而且,在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。
函数定义执行完之后,才会按顺序执行其他语句代码。
也就是说,在第一次调用 myfunc 之前,第一个函数语句定义的代码逻辑,已被第二个函数定义语句覆盖了。所以,两次都调用都是执行最后一个函数逻辑了。

一段代码中的定义式函数语句会优先执行,这似乎有点象静态语言的编译概念。所以,这一特征也被有些人称为:JavaScript 的“预编译”。

技术点

特性

通常来说,浏览器对于Javascript的运行有两大特性:
1)载入后马上执行
2)执行时会阻塞页面后续的内容(包括页面的渲染、其它资源的下载)。于是,如果有多个js文件被引入,那么对于浏览器来说,这些js文件被被串行地载入,并依次执行。
 因为javascript可能会来操作HTML文档的DOM树,所以,浏览器一般都不会像并行下载css文件并行下载js文件,因为这是js文件的特殊性造成的。所以,如果你的javascript想操作后面的DOM元素,基本上来说,浏览器都会报错说对象找不到。因为Javascript执行时,后面的HTML被阻塞住了,DOM树时还没有后面的DOM结点。所以程序也就报错了。

1. 加载顺序:引入标记script的出现顺序

页面上的Javascript代码是HTML文档的一部分,所以Javascript在页面装载时执行的顺序就是其引入标记

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>无标题 3</title> 
<script>
    alert("1-最先执行"); 
</script> 
</head> 
<body onload="alert('3-最后执行');"> 
<script>
    alert("2-接着执行"); 
</script> 
</body> 
</html>

基本概念

函数-function

定义式函数

function myfunc()
{
    alert("hello");
};

变量式函数

var myfunc=function myfunc()
{
    alert("hello");
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

js前端des加密

Vue.js 开发记录

Vue.js 开发记录 背景:开发义乌宾王158商贸城信息管理系统,前端使用“饿了么”开源的element UI,基于vue。主要是为了尝新与替换实验室现有的违背潮流的“jq套件”,以下为开发过程中...

js图片轮播

android与js交互

  • 2017-10-10 14:16
  • 4.05MB
  • 下载

基于native.js和html5的APP开发之消息推送

基于native.js的APP开发之消息推送native.js是为了方便html开发时,调用android原生态,实现消息的推送。首先看一下效果图: 在实现的过程中,要在plus初始化结束后,才能调...

jquery.cookie.js

  • 2017-10-10 14:19
  • 14KB
  • 下载

JS中的类型检测

判断js对象类型之Object.prototype.toString.call(obj)这里我们使用Object原型上的toString函数,是因为防止需要检测类型的obj对象自己定义了toStrin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)