[前端笔记]第三篇:JavaScript
2016-07-07 16:17
525 查看
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理。
HTML的head中
HTML的body代码块底部(推荐)
由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已。
两种存在形式:
JavaScript中代码注释(此注释仅在script代码块中有效):
单行 //
多行 /* */
原始类型:
数字
字符串
布尔值
对象类型:
数组
“字典”
...
两个特殊的数据类型null、undefined
null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。
undefined是一个特殊值,表示变量未定义。
特别的,数字、布尔值、null、undefined、字符串是不可变。
需要注意的是,JavaScript 的字符串是不可变的(immutable),String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。
如图,JavaScript 里的字符串类类似于下面那种情况,创建字符串时候已经规定了占用的内存长度,就造成了不可修改,不可改变长度
JavaScript里的列表字典是采用的 链表 的方式连接不同的内存位置,列表字典长度可变可修改
View Code
注:声明提前,在JavaScript引擎“预编译”时进行。
更多:http://www.cnblogs.com/wupeiqi/p/5649402.html
闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」
由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。
对于上述代码需要注意:
Foo充当的构造函数
this代指对象
创建对象时需要使用 new
上述代码中每个对象中均保存了一个相同的Func函数,从而浪费内存。使用原型和可以解决该问题:
一、代码存放位置
JavaScript代码应该存放在:HTML的head中
HTML的body代码块底部(推荐)
由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已。
<script src="https://www.gstatic.com/og/_/js/k=og.og2.en_US.iF4jnkQuaf0.O/rt=j/t=zcms/m=def/exm=in,fot/d=1/ed=1/rs=AA2YrTv5-POC4Ks9GtGRdY2ywUWisqz7-Q"></script> <script> alert('123'); </script>
两种存在形式:
<!-- 方式一 --> <script type"text/javascript" src="JS文件"></script> <!-- 方式二 --> <script type"text/javascript"> Js代码内容 </script>
二、全局变量和局部变量
JavaScript中 var 开头的变量是局部变量,不带 var开头的则是全局变量。python中是先声明一个局部变量再通过 global 关键字让变量编程全局变量,这和JavaScript有很大区别
<script type="text/javascript"> // 全局变量 name = 'seven'; function func(){ // 局部变量 var age = 18; // 全局变量 gender = "男" } </script>
JavaScript中代码注释(此注释仅在script代码块中有效):
单行 //
多行 /* */
三、数据类型
JavaScript 中的数据类型分为原始类型和对象类型:原始类型:
数字
字符串
布尔值
对象类型:
数组
“字典”
...
两个特殊的数据类型null、undefined
null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。
undefined是一个特殊值,表示变量未定义。
特别的,数字、布尔值、null、undefined、字符串是不可变。
需要注意的是,JavaScript 的字符串是不可变的(immutable),String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。
如图,JavaScript 里的字符串类类似于下面那种情况,创建字符串时候已经规定了占用的内存长度,就造成了不可修改,不可改变长度
JavaScript里的列表字典是采用的 链表 的方式连接不同的内存位置,列表字典长度可变可修改
function f2(){ var arg= [11,22]; function f3(){ console.log(arg); } arg = [44,55]; return f3; } ret = f2(); ret();
View Code
注:声明提前,在JavaScript引擎“预编译”时进行。
更多:http://www.cnblogs.com/wupeiqi/p/5649402.html
3、闭包
「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」
由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。
function f2(){ var arg= [11,22]; function f3(){ return arg; } return f3; } ret = f2(); ret();
4、面向对象
function Foo (name,age) { this.Name = name; this.Age = age; this.Func = function(arg){ return this.Name + arg; } } var obj = new Foo('alex', 18); var ret = obj.Func("sb"); console.log(ret);
对于上述代码需要注意:
Foo充当的构造函数
this代指对象
创建对象时需要使用 new
上述代码中每个对象中均保存了一个相同的Func函数,从而浪费内存。使用原型和可以解决该问题:
function Foo (name,age) { this.Name = name; this.Age = age; } Foo.prototype = { GetInfo: function(){ return this.Name + this.Age }, Func : function(arg){ return this.Name + arg; } }
相关文章推荐
- html+javascript实现可拖动可提交的弹出层对话框效果
- javascript基础:事件3事件对象
- JSP——EL表达式
- html5 javascript 小型计算器
- JS正则表达式-test()方法的使用
- 【推荐】代码高亮JS框架之HelloWorld
- javascript代理模式(proxy)
- 实现JavaScript 的Math.round,Math.ceil,Math.floor函数功能 CodeWars 打怪日记
- 调用百度地图api (javascript)
- js操作数组
- JavaScript中判断对象类型的种种方法
- BZOJ_1029_[JSOI2007]_建筑抢修_(贪心+优先队列)
- javascript 基础篇
- 深入浅出zeptojs中tap事件
- 介绍Json
- JS不间断横/纵向滚动
- js 身份证号码验证、邮箱校验
- 对json数据进行排序
- 计算当前时间的到晚上00:00:00的相差时间
- JS中的prototype属性实现继承