JavaScript学习笔记(1)
来源:互联网 发布:php str contains 编辑:程序博客网 时间:2024/04/30 06:41
为了学习公司的js框架,项目经理组织我们共同学习《JavaScript高级程序设计(第3版)》一书。我将用博文记录我们的学习点滴。
一、JavaScript简介
1、JavaScript是什么?它能干什么?
个人理解是客户端(实际指浏览器)脚本,能与浏览器窗口及网页内容进行交互。
JavaScript的核心语言功能由ECMAScript提供。ECMAScript规定了这门语言的语法、类型、语句、关键字、保留字、操作符、对象等。ECMAScript本身与Web浏览器没有依赖关系,Web浏览器只是ECMAScript应用的宿主环境之一,比如Node、Adobe Flash也是宿主环境。
与浏览器窗口的交互由BOM(浏览器对象模型Browser Object Model)提供访问方法和接口,比如能弹出关闭移动缩放浏览器窗口,能支持cookies,提供navigator、location、screen对象以及XMLHttpRequest、ActiveXObject等自定义对象;
与网页内容的交互由DOM(文档对象模型Document Object Model)提供访问方法和接口,它把整个页面映射为一个多层节点结构,能对文档中的任意部分进行访问和操作。
JavaScript主要可以做客户端验证,能实现各种提升用户体验的动态效果。
二、在HTML中使用JavaScript
1.在HTML中使用JavaScript需要使用<script>元素,有嵌入脚本和外部脚本两种写法。
嵌入脚本:<script type="text/javascript" >alert("hello,javascript");</script>
外部脚本:<script type="text/javascript" src="example.js"> </script>
//这里的src值可以是同一个服务器上的文件路径,也可以是其他任何域中的文件(个人理解为一个网址)。
2.<script>的async属性和defer属性
使用这两个属性能将JavaScript脚本延迟到整个页面都解析完毕后再运行
<script type="text/javascript" defer="defer" src="example1.js"> </script>
<script type="text/javascript" async="async" src="example2.js"> </script>
3.<noscript>元素的使用
可以指定在不支持脚本的浏览器中显示的替代内容,写在<body>标签中。
<body>
<noscript>该页面需要您的浏览器支持(启用)JavaScript</noscript>
</body>
三、基本概念
1.JavaScript区分大小写
2.在ECMAScript5引入了严格模式的概念,在代码中添加"use strict"即可,要么在脚本顶部,要么只在特定的函数体中。
3.ECMAScript变量是松散类型的
4.变量用var声明时,是局部变量,省去var则是全局变量。
5.ECMAScript中的数据类型,有5中简单的数据类型(也称基本数据类型)Undefined、Null、Boolean、Number、String和一种复杂数据类型Object
ECMAScript中的数据类型
undefined:使用var声明变量但未对其初始化时,变量的值就是undefined(没必要显式设置),执行typeof操作符的返回值也是undefined
null表示一个空对象指针,执行typeof操作符时返回值是object;显式得设置为null表明该变量想存对象,是有好处的
Number数值范围是-Infinity~Infinity,可使用isFinite()来判断数字是否为有限大;另外,使用isNaN()来判断参数是否为数字;
注意:NaN与任何值都不相等,包括与NaN本身。
数值转换函数Number(),parseInt(),parseFloat():Boolean值true转为1,false转为0;
当字符串中以数字开头后边有其他字符,那么使用Number()转换时为NaN,使用parseInt()时会忽略后边的非数字字符;
对于空字符串,使用Number()转换时结果为0,使用parseInt()转换时为NaN;
parseInt()提供了第二个参数表示转换为多少进制,而Number()和parseFloat()则只能转为10进制;
使用parseFloat()转换时,多个小数点只认第一个;
Boolean有true和false两个字面值;但所有类型都可以通过转型函数Boolean()转换为一个Boolean值。对于Null和Undefined类型,转为false;对于Number,0和NaN会转为false,其余转为true;对于String,""转为false,非空字符串转为trueString采用单引号、双引号都行,但需要配对;调用字符串的length属性得到的值可能不准确(如果包含转义序列时);
字符串转换函数toString()和String():
null和undefined没有toString(),而String()返回这两个值的字面值;
在数值调用toString()函数时,可传入一个表示输出数值基数的参数,即按多少进制输出,不传时是按照10进制输出的;
Object对象是一组数据和功能的组合;
创建对象时,如果没有参数,可省略小括号,写为var obj = new Object;
检查给定的属性在当前对象的实例中是否存在:hasOwnProperty(propertyName)
检查传入的对象是否是另一个对象的原型:isPrototypeOf(object)
检查给定的属性是否能够使用for-in语句来枚举:propertyIsEnumerable(propertyName)
返回对象的字符串表示:toString()、toLocaleString()、valueOf() (valueOf()返回对象的字符串、数值或布尔值表示)
6.ECMAScript中的操作符
操作符学习备注递增和递减操作符++i与i++,注意前置和后置的区别;
此操作符适用于Undefined和Null外的所有类型,非数值类型会先转换为数值然后执行加减1操作
一元加和减操作符就按正负号理解,也可用于转换数据类型位操作符按内存中数值的位来操作数值;
默认情况下,ECMAScript中的所有整数都是有符号整数;
按位非Not(符号为一个波浪线~,与操作数的负值减1结果相同):
var num1 = 25; var num2 = ~num1;
按位或OR(符号为一个竖线|):var result = 25|3; alert(result);//结果为27
按位异或XOR(由一个插入符号表示,^)
移位操作:左移、有符号的右移、无符号右移
var oldValue = 2; var newValue = oldValue << 5; //表示2转换为二进制后左移5位
布尔操作符逻辑非(!)、逻辑与(&&)、逻辑或(||),
可用于转换数据类型,即先隐式执行Boolean()
乘性操作符乘法、除法、求模,注意有Infinity参与的乘性运算,结果往往是正负Infinity或NaN加性操作符加法、减法,同样注意有Infinity参与的运算关系操作符小于、大于、小于等于、大于等于
如果两个操作数是字符串,则比较两个字符串对应的字符串编码值;
如果只有一个操作数是数值,则先将另一个操作数(若为对象则调用其valueOf()或toString()方法)转换为一个数值,然后执行比较;
相等操作符相等和不相等——先转换再比较,全等和不全等——仅比较而不转换条件操作符类似于var max = (num1 > num2) ?num1:num2;赋值操作符重点介绍一下复合赋值操作符
(*=、 /= 、%= 、+=、-=、左移赋值<<=、有符号右移赋值>>=、无符号右移赋值>>>=)
逗号操作符多用于声明多个变量;
用于赋值时总会返回表达式中的最后一项:如var num = (5,2,1);//返回1
7.语句
语句学习备注if始终使用代码块do-while常用于循环体中代码至少要被执行一次的情形while forfor循环的循环变量是全局变量:
var count = 10;
for(var i = 0; i<count; i++){
alert(i);
}
alert(i);//此行代码执行结果为10
for-in可以用来枚举对象的属性,在使用for-in前需要检测对象是否为null或undefined
for(var propName in window){
document.write(propName);//顺序不可预测
}
lable在代码中添加标签,语法如label:statementbreak和continue with将代码的作用域设置到一个特定的对象中
示例:
with(location){
var url = href;
var hostName = hostname;
}
如果在局部变量中找不到变量(如href)的定义,就会在location对象中看是否有相同的属性
另外,大量使用with语句会降低性能
switch支持任何数据类型,如字符串,但比较的时候采用的是全等操作符8.函数
可return也可不return,最好是要么始终返回一个值,要么永远都不要返回值
函数的arguments对象的length属性可以获知有多少个参数传递给了函数
这里函数没有重载一说
- javascript 学习笔记(1)
- javaScript 学习笔记(1)
- JavaScript学习笔记(1)
- JavaScript学习笔记(1)
- JavaScript学习笔记(1)
- JavaScript学习笔记(1)
- JavaScript学习笔记1
- JavaScript 学习笔记 1
- JavaScript学习笔记(1)
- JavaScript学习笔记(1)
- JavaScript学习笔记1
- JavaScript学习笔记1
- Javascript 学习笔记1
- javaScript学习笔记(1)
- javascript学习笔记1
- JavaScript学习笔记1
- javascript学习笔记1
- JavaScript学习笔记1
- 最强A9四核加成?魅族“梦想”机MX四核版评测
- 软件开发过程种常见英语
- [ios]iPhone应用程序编程指南--窗口和视图
- MFC CSliderctrl类的成员函数
- 存储过程,作用域
- JavaScript学习笔记(1)
- MySQL 一闪退出解决
- STL中容器的删除操作
- 模拟Form提交,得到结果页内容
- 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序
- Scanner用法
- OCCI
- Unix下两种后台执行SQL脚本的方法
- sql where 1=1和 0=1 的作用