关于JavaScript基础知识

变量

1.变量的类型

基本类型:String Number Null Undefined Boolean

引用类型:Object(function Array ....)

2.变量的定义

基本类型:

var example;(弱类型)

引用类型:

var example =new Array()[或者用example=[]]

两种类型定义的方法相同,但是引用类型定义之后具有属性和方法。

例:var example = new Object()

example.name ="xiao ming"(为变量增加属性)

alert("name"+“:”+example.name)//输出:name:xiao ming

delete example.name(删除变量的属性)

alert("name"+“:”+example.name)//输出:name:undefined

3.变量值的复制

基本类型:

数据类型是各种语言组成的基本要素,在javaScript中也不例外。

javaScript中的数据类型初次接触你会感觉So easy但深入学习之后才会了解其复杂程度。

学习JavaScript的数据类型,首先我们要掌握能如何准确快速的判定出某个值的数据类型。

 

javaScript的变量的数据类型判定

1.typeof "variable"

适用范围:除Null外的类型

返回值:变量的类型(除Null外)

优点:对于数据类型的变量,可以准确无误的判定出数据类型,方便程序员的编码操作。

缺点:不能判断Null类型、不能精准的判定引用类型

例如:

typeof “dd”//String

typeof  2//Number

typeof  undefined//Undefined

typeof  false//Boolean

var a =new Object()

var b=new Array()

var c=new Date()

...

typeof  a//Object

typeof  b//Object

typeof c//Object

typeof  null//Object

2. a instanceof b(必须是Object)

使用范围:引用类型

返回值:Boolean 类型值

优点:对于引用类型而言,instanceof可以判断a是否是b类型的变量

缺点:对于变量是基本类型时,instanceof不起作用

例如

var a=[]

var b="string"

var c=new String()

a instanceof Date//false

a instanceof Array//true

a instanceof String(包装类)//false

b instanceof String(包装类)//false

c instanceof String//true

a instanceof Null/Undefined(不存在包装类)//无意义

数据类型NULL和Undefined

1.Undefined类型 

此种类型的值有三种情况:

一个未初始化的变量的值为undefined

一个没有传入实参的形参变量的值为undefined

一个函数什么都不返回,则该函数默认返回undefined

eg:

1.var a(此时直接输出a的值则为undefined)

2.function example(a){}(在函数未传入值之前a的值则为undefined)

3..function a(){}(函数a的返回值为undefined)

注意:在web编程中常会在firebug中遇到undefined的错误,原因多数是因为在调用某个变量之前未对其声明,或是调用的函数不具有你调用的属性

 

2.Null类型(唯一值为null)

从逻辑角度看,null表示的是一个空对象指针(typeof null返回值为object,因为在JavaScript中null一切对象的父类)

有以下两点需要注意:

1.null == undefined 的返回值时true(因为undefined是自null中派生的o,因此在遇到需要判定null与undefined时应该用"==="来判定)

2.另外string中的空字符""与null完全不是同个意思

BOM对象

在我们使用JavaScript进行开发时,BOM(浏览器对象模型)是我们必须要掌握的知识。w3c为了把浏览器中的JavaScript最基本的部分标准化,已经将BOM的主要方面纳入了HTML5的规范中,可见了解BOM对我们JavaScript的开发有多重要。

BOM的对象核心是window,它表示浏览器的一个实例,下面来详细了解window对象。

在浏览其中window有双重角色:JavaScript访问浏览器的接口 和 ECMAScript规定的全局对象。

1、全局的window对象

JavaScript中的任何一个全局函数或变量都是window的属性

var globalVariable = "hello everyone!"

document.write(window.globalVariable)//输出"hello everyone"

2、window与self对象

self对象与window对象完全相同,self通常用于确认就是在当前的窗体内。

console.info(window === self)//返回值为true

3、常用的window子对象:

Location

History

Navigitor

Document

Screen

4、常用window方法:

window.alert()
window.confirm()
window.setTimeout()
window.setInterval()
window.close()
window.resizeBy()
window.resizeTo()
window.scrollTo()
window.scrollBy()

MDN中的注释:Location接口表示其关联的对象所展示的页面的地址等信息,对该对象的修改会反映到关联的对象上。 Document 和 Window 接口都有一个关联的Location,可以分别用Document.location和Window.location来访问它们对应的Location。

Window.location

1)Window.location是一个只读属性返回一个location对象

document.write(window.location)//输出:

Location {href: "http://write.blog.youkuaiyun.com/postedit", ancestorOrigins: DOMStringList, origin: "http://write.blog.youkuaiyun.com", replace: function, assign: function…}

2)window.location常用的属性:

hash //返回一个URL的锚部分
host //返回一个URL的主机名和端口
hostname //返回URL的主机名
href //返回完整的URL
pathname //返回的URL路径名。
port //返回一个URL服务器使用的端口号
protocol //返回一个URL协议
search //返回一个URL的查询部分

3)window.location常用的方法:

location.assign()//导航到新页面

location.reload(true)//强制重新从服务器加载页面

location.replace()//用一个新文档取代当前文档

 

注:assign()和replace()的区别如下
window.location.assign(url) : 加载 URL 指定的新的 HTML 文档。 就相当于一个链接,跳转到指定的url,当前页面会转为新页面内容,可以点击后退返回上一个页面。
window.location.replace(url) : 通过加载 URL 指定的文档来替换当前文档 ,这个方法是替换当前窗口页面,前后两个页面共用一个窗口,所以是没有后退返回上一页的


History
 

History接口用来处理用户操作浏览器的浏览历史  history属性:history.length(返回浏览器列表中url的数量)  history的方法: history.back()//加载 history 列表中的前一个 URL。 history.forward()//加载 history 列表中的下一个 URL。 history.go()//加载 history 列表中的某个具体页面。 Screen接口是用来访问当前显示屏的信息,以便更好的处理用户的需求。 常用的screen属性: availHeight  // 返回显示屏幕的高度 (除 Windows 任务栏之外)。 availWidth  // 返回显示屏幕的宽度 (除 Windows 任务栏之外)。

width    // 返回显示器屏幕的宽度。
height     //返回显示屏幕的高度。

bufferDepth  //   设置或返回调色板的比特深度。
colorDepth     //返回目标设备或缓冲器上的调色板的比特深度。
deviceXDPI    // 返回显示屏幕的每英寸水平点数。
deviceYDPI    // 返回显示屏幕的每英寸垂直点数。
fontSmoothingEnabled    // 返回用户是否在显示控制面板中启用了字体平滑。
logicalXDPI//     返回显示屏幕每英寸的水平方向的常规点数。
logicalYDPI   //  返回显示屏幕每英寸的垂直方向的常规点数。
pixelDepth     //返回显示屏幕的颜色分辨率(比特每像素)。
updateInterval  //   设置或返回屏幕的刷新率。

JavaScript中"=="

“==”比较的内容

在比较时,会进行强制类型的转换如:

a.当其中一个数为boolean类型时,则在比较前将false转为0,true转为1(true==1返回true)

b.当其中一个值为字符串另一个值为number时,先将字符串转换为number型的

c.当其中一个值为对象而另一个不是时,需要调用valueOf()的方法得到的基本类型值在进行比较

d.null == undefined

e.如果两个值都为对象,则比较这两个对象是否指向同一个对象的值

常用方法

一  splice和slice

1.splic(start,number,item1,item2.....)

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目

start:必需输入项。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。

number:必需输入项。要删除的项目数量。如果设置为 0,则不会删除项目。

item可选。向数组添加的新项目。

优点:改法可以灵活的改变数据。

缺点:该方法会改变原始数组(使用时要考虑到页面刷新问题)。

返回值:如果从 数组中删除了元素,则返回的是含有被删除的元素的数组。

例如:

var a=["a","b","c","d"]

alert(a.splice(0,2))//输出"a","b"

------------------------

alert(a.splice(0,2,"aaa"))//输出"a","b"

------------------------

alert(a.splice(0,2,"aaa"))

alert(a)//输出"aaa","c","d"

-----------------------------------

 

alert(a.splice(1,0))

alert(a)//输出"aaa","c","d"

 

alert(a.splice(0,2))

 

alert(a)//输出"a","b","c","d"

2.slice(start,end)

slice() 方法从数组中复制项目,然后返回新的数组

start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

end:可选项。整数,规定复制数组的结束位置。未设置时表示数组元素的结尾。

优点:不改变原有的数组。

缺点:只能复制数组,无法添加新元素,过滤数组中间元素是操作比较繁琐。

返回值:一个新生成的数组。元素为原数组中复制的元素。

 

例如:

var a=["a","b","c","d"]

alert(a.slice(1,0))//输出["b","c","d"]

------------------------

alert(a.slice(0,2))//输出["a","b"]

------------------------

alert(a.slice(0,2))

alert(a)//输出"a","b","c","d"

二 setTimeout 和setInterval

 

在JavaScript中的window对象中封装了两个很有用的方法,setTimeout()【超时调用】和setInterval()【间歇调用】。

1.setTimeout()方法

1)调用方式:

var timeOut=setTimeout(function(){

alert("setTimeout")

},1000);

【"function"第一个参数可以是字符串,"1000"第二个参数表示超时调用的时间,单位时毫秒】

可以直接传递字符串,但不建议使用。

2)优点:不用考虑占用内存的问题,因为他仅仅在满足条件是执行执行一次。

3)缺点:如果想要多次执行,必须添加循环的方法。

4)停止方法:clearTimeOut(timeOut);

2.setInterval()方法

 

1)调用方式:

var timeOut=setInterval()(function(){

alert("setInterval()")

},1000);

【"function"第一个参数可以是字符串,"1000"第二个参数表示调用方法的间隔时间,单位时毫秒】

可以直接传递字符串,但不建议使用。

2)优点:如果每隔某段时间就调用(不停的执行方法,例如:界面时间的显示),可以直接用此方法实现。

3)缺点:内存消耗过大,容易造成死循环。

4)停止方法:clearInterval(timeOut);

总结:在项目中我们最好还是使用setTimeout这个方法,因为它可以用循环实现setInterval的功能,避免了setInterval中一些不必要的问题。另外在使用setInterval是会出现不按我们所指定的时间来进行调用。这是因为setInterval的回调函数并不是到时后立即执行,而是等到系统计算资源空闲下来后才会执行.而下一次触发时间则是在setInterval回调函数执行完毕之后才开始计时,所以如果setInterval内执行的计算过于耗时,或者有其他耗时任务在执行,setInterval的计时会越来越不准,延迟很厉害.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值