Javascript
2016-12-25 15:35:56 0 举报
AI智能生成
Javascript是一种高级的、解释型的编程语言,由美国甲骨文公司(现为微软)开发并发布于1995年。它主要用于网页和网络应用程序的开发,可以为网页添加复杂的互动功能。Javascript支持多种编程范式,包括面向对象、命令式、函数式和声明式编程。它的语法类似C语言,但更简单易学。Javascript是一种单线程的语言,但它使用事件循环和异步回调来处理并发操作。Javascript还具有自动垃圾回收机制,可以自动管理内存,减少了开发者的负担。此外,Javascript还拥有丰富的内置对象和库,以及与HTML和CSS的紧密集成,使得开发者可以轻松地创建出富有表现力和交互性的网页。
作者其他创作
大纲/内容
变量、作用域和内存问题
基本类型
Undefined、Null、Boolean、Number、String
传递参数
复制给局部变量
引用类型
在很多语言中,字符串以对象的形式表示,被认为是引用类型,但是ECMAScript放弃了这一传统
对象、数组
放在堆内存中
JavaScript不允许直接访问内存中的位置
复制保存对象的某一属性是,操作的是对象的引用
为对象添加属性时,操作的是实际的对象
传递参数
局部变量只是生成了相同的引用
类型检测
typeof 'abc'; //string
typeof 123; //number
typeof true; //boolean
typeof undefined; //undefined
typeof null; //object
typeof {}; //object
typeof 123; //number
typeof true; //boolean
typeof undefined; //undefined
typeof null; //object
typeof {}; //object
result = variable instanceof constructor
ECMA-262规定任何在内部实现[[call]]方法的对象typeof返回“function”
typeof 函数名;//function
typeof 正则表达式;//function
typeof 正则表达式;//function
执行环境
全局
HTML中使用
<script>标签
type:MIME类型,默认是text/javascript()
实际上服务器在传送JavaScript文件时使用的MIME类型是“application/x-javascript”
JavaScript文件的扩展名.js不是必须的,因为浏览器不会检查文件类型,只要确定MIME类型
src:外部文件地址,可选
charset:通过src属性指定的代码的字符集
async:是否异步加载外部文件
defer:外部文件的脚本延迟到文档完全被解析、显示出来后再执行
使用外部文件的好处
脚本文件集中维护
可缓存复用
XHTML
使用HTML实体代替“<”“>”
用CData片段来包含JavaScript代码
<![CDATA[ ... ]]>
浏览器兼容问题
用JavaScript注释标记注释掉CDATA标签
兼容Mosaic浏览器
将JavaScript代码包含在一个HTML注释中
<script><!-- ... --></script>
文档模式
通过文档类型来切换,主要影响CSS内容呈现,某些情况下影响JavaScript的解释执行
混杂模式
默认模式,浏览器兼容性差
标准模式
<!DOCTYPE html ...>
准标准模式
过渡型
Transitional
框架集型
Frameset
兼容不支持脚本的浏览器
<noscript>里的HTML元素显示条件
浏览器不支持脚本
浏览器支持脚本,但脚本被禁用
基本概念
ECMAScript语法
伪语言
借鉴C以及其他类C语言的语法(Java、Perl)
变量名区分大小写、不可使用关键字、保留字
标识符规则,字母_$数字组合,必须非数字开头
驼峰大小写格式
myCar
firstSecondThird
C风格注释
// 单行注释
/*
* 多行注释
*/
* 多行注释
*/
严格模式“use strict”
ECMAScript 5引入,处理ECMAScript 3中的一些不确定行为
对不安全操作会抛出异常
变量未声明
使用with、eval、arguments
函数参数重名
变量
松散类型、弱类型
用关键字定义变量
var
let
const
类型
Undefined
声明但未初始化
Null
Boolean
Number
NaN
整数
数值转换
Number()
parseInt()
parseFloat()
浮点数
0.1+0.2!=0.3
Infinity
String
字符字面变量 \n \t \r \' \"
不可变
新的赋值其实经历了创建销毁的过程
转化为字符串
toString()
null、undefined值没有这个方法
调用数值的toString()时可以传入一个参数:数值的基数
String()
有toString方法,调用之
null,返回“null”
undefined,返回“undefined”
+“”
Object
一组数据和功能的组合
可通过new操作来创建
constructor
用于创建实例
hasOwnProperty(propertyName)
isPrototypeOf(object)
propertyIsEnumerable(propertyName)
toLocaleString()
toString()
valueOf()
操作符
一元
递增递减操作符:++ --
不仅适用于整数
字符串
包含有效数字字符:转成数字值,再自加/减
不包含有效数字字符:NaN
布尔值
true转为1,再自加/减
false转为0,再自加/减
浮点型
自加/减
对象
调用valueOf( )
一元加减
在对非数值使用一元加操作符时,类Number()
var a = "1";a = +a;
位操作符
按内存中表示数值的位来操作数值
ECMAScript中所有数值都以IEEE-75464位格式存储
对于开发人员来说64位存储是透明的
当作操作32位的整数一样
当作操作32位的整数一样
前31位表示整数的值,最后一位是符号位,0正数,1负数
按位非 ~、按位与 &、按位或 |、左移 <<、有符号右移 >>、无符号右移 >>>
布尔操作符
逻辑非 !
逻辑与 &&
逻辑或 ||
乘性操作符 * / %
加性操作符 + -
关系操作符 > <
相等操作符 == !=
全等和不全等 === !==
赋值操作符 = += -= *= /= %= <<= >>= >>>=
逗号操作符
var num=1,num2=2,num3=3;
var num={1,2,3,4,0} //num的值为0,最后一项
语句
if
do-while
while
for
for-in
label
语法 label: statement
使用label添加标签,以便将来使用
break
退出整个循环
continue
退出该次循环
with
将代码的作用域设置到一个特定的对象中
耗费性能,不推荐使用
严格模式下不允许使用
switch
与C的switch类似
函数
关键字:function
参数的理解
ECMAScript函数,参数个数、类型不限制
函数其实是接受一个参数数组,函数内可通过arguments对象来访问这个参数数组
综上,命名参数只是为了方便,是非必要的
可以利用这个特达到重载效果
ECMAScript中所有参数传递都是值,不可能通过引用传递参数
没有重载
没有签名,无法实现真正意义上的重载
如果定义了两个相同名字的函数,后者覆盖前者
可通过arguments参数检测,实现重载效果
0 条评论
下一页