JavaScript学习笔记及知识点整理_1
一.js的基础部分
1.==和===的区别:==在判断是否相等的时候会进行类型转换,有时会得到非常奇怪的结果,因此一般情况下都是用===判断是否相等
2.strict模式:在js中,如果一个变量没有用var进行声明,那么这个变量将会变成全局变量.采用strict模式声明后,如果该变量没有用var声明,那么将会报错!采用strict模式的方法是在js的第一行加上:
'use strict';
3.多行字符串的表示:由于多行字符串用\n写起来比较费事.最近的ES6标准新增了一种多行字符串的表示方法,例如:
alert('这是一个
多行
字符串');这样就可以输出多行字符串了.
4.字符串获取某个字符,var s='hello world';s[0]可以获取到字符.字符串不会发生变化,但是用s[0]赋值也不会发生错误.字符串的常用方法:(调用这些方法不会改变原有字符串的内容而是会返回一个新的字符串)
1>.toUpperCase
2>.toLowerCase
3>.indexOf
4>.subString
5.javascript数组可以包含任意数据类型,并且通过索引来访问每一个元素
6.js的数组是可以随意改变大小的,要取得数组的长度,可以采用array.length属性来获取.直接给array.length赋值将会导致数组产生变化:
var arr=[1,'aa'];
arr.length=6; //-->arr:[1,'aa',undefined,undefined,undefined,undefined]
var brr=[1,'bb']
brr[4]='cc'; //-->brr:[1,'bb',undefined,undefined,'cc']
7.javascript访问对象不存在的属性将不会报错,而会返回undefined.
var xiaoming = {
name: '小明',
birth: 1990,
school: 'No.1 Middle School',
height: 1.70,
weight: 65,
score: null
};
alert(xiaoming.friend); //undefined
8.js的属性是动态的,因此可以随意给js对象添加任意的属性.
var xiaoming = {
name: '小明'
};
xiaoming.age; // undefined
xiaoming.age = 18; // 新增一个age属性
xiaoming.age; //
delete xiaoming.age; // 删除age属性
xiaoming.age; // undefined
delete xiaoming['name']; // 删除name属性
xiaoming.name; // undefined
delete xiaoming.school; // 删除一个不存在的school属性也不会报错
如果要检测某个对象是否有某个属性,可以用in 操作符
var xiaoming = {
name: '小明',
birth: 1990,
school: 'No.1 Middle School',
height: 1.70,
weight: 65,
score: null
};
'name' in xiaoming; // true
'grade' in xiaoming; // false
9.for in循环:
可以把对象的属性依次遍历出来,效果如下:
var obj={
name:'胡龙海',
age:23,
sex:'male'
};
for(var key in obj) {
alert(obj[key]);//把一个对象所有的属性名称给遍历出来,'胡龙海',23,'male'
alert(key); //把属性名遍历出来.name,age,sex
}
由于数组也是对象,当用for in遍历数组的时候,遍历得到的是数组的索引.代码如下(注意for in对于Array的循环遍历得到的是String而不是number.:
var a = ['A', 'B', 'C'];
for (var i in a) {
alert(i); // '0', '1', '2'
alert(a[i]); // 'A', 'B', 'C'
}
10.undefined判断的是变量的类型,而其他两个判断是变量的值。
undefined可以用来表示以下的状况:
1. 表示一个未声明的变量,
2. 已声明但没有赋值的变量,
3. 一个并不存在的对象属性
null 是一种特殊的object ,表示无值;
NaN是一种特殊的number ,表示无值;
下面的代码输出NAN(undefined与number类型做操作,最后得到的结果是NAN(特殊的数字,表示无值))
var x;
alert(-x);
11.function参数列表中传入任意的参数都可以,其中只有在函数中声明的参数会被参与函数运算,而没有被声明的参数会被自动忽略.例如假设一个函数的参数列表有2个,而传入了4个变量,则后面2个变量会被自动忽略.
12.js的变量提升:它会扫描整个函数的语句,并且将所有声明的变量提升到函数的顶部.例如下面的代码的输出将是一个很好的例子:
function foo() {
var x='嘻嘻';
alert(x+y);
var y=2;//这里对于变量y的声明将会被提升到函数体顶部,但是却没有给y赋值,因此输出嘻嘻undefined
}
这个函数相当于下面的函数:
function foo1() {
var x='嘻嘻';
var y;
alert(x+y);
y=2;
}
20.js的全局变量是声明在函数外的,实际上javascript有一个全局对象window,而全局变量实际上是绑定在window对象上的属性,同时,函数也是全局变量,例如var f=function() {},声明了一个名字叫做f的全局变量.同时也可以通过window.f来调用函数.而实际上alert函数也是window的一个属性,下面的代码说出了这一点:
window.alert('调用window.alert()');
// 把alert保存到另一个变量:
var old_alert = window.alert;
// 给alert赋一个新函数:
window.alert = function () {}
alert('无法用alert()显示了!');//无输出
// 恢复alert:
window.alert = old_alert;
alert('又可以用alert()了!');
22.局部变量的函数作用域
注意:js和Java不同的是javascript的变量作用域实际上是函数内部,而我们在for循环的语句块中是无法定义具有局部作用域的变量的:
<script type="text/javascript">
document.getElementById("bt").onclick=function foo()
{
for(var i=0;i<5;i++) { }
alert(i);//输出5
}
</script>
23.包装对象:new Number,new Boolean,new String能把相应的基本类型转化为相应的对象.而这三个包装方法不加new的时候,此时这三个包装方法会被当作普通函数,把任何其他数据类型的数转化为number,boolean,string.
JavaScript学习笔记及知识点整理_1的更多相关文章
- JavaScript学习笔记及知识点整理_3
1.js的事件冒泡及阻止方法:事件冒泡的概念:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事 ...
- JavaScript学习笔记及知识点整理_2
1.一般而言,在Javascript中,this指向函数执行时的当前对象.举例如下: var someone = { name: "Bob", showName: function ...
- 大数据 -- kafka学习笔记:知识点整理(部分转载)
一 为什么需要消息系统 1.解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多 ...
- kafka学习笔记:知识点整理
一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...
- [Big Data - Kafka] kafka学习笔记:知识点整理
一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...
- JavaScript学习笔记——对象知识点
javascript对象的遍历.内存分布和封装特性 一.javascript对象遍历 1.javascript属性访问 对象.属性 对象[属性] //字符串格式 //javascript属性的访问方法 ...
- 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要三
最近工作较忙,手上有几个项目等着我独立开发设计,所以平时工作日的时候没有太多时间,下班累了就不想动,也就周末有点时间,今天我花了一个下午的时间来继续总结与整理书中要点,在整理的过程中,发现了书中的一些 ...
- Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要系列文章索引
从发表第一篇文章到最后一篇文章,时间间隔有整整一个月,虽只有5篇文章,但每一篇文章都是我吸收<LEARNING HARD C#学习笔记>这本书的内容要点及网上各位大牛们的经验,没有半点废话 ...
随机推荐
- freebsd|odoo - 为odoo报表 安装文泉译中文字体
来源: Odoo8.0中使用文泉译中文字体 http://blog.csdn.net/vnsoft/article/details/40056935 FreeBSD wkhtmltop ...
- MVC下载文件方式
MVC下载文件方式 http://www.cnblogs.com/liang--liang/archive/2012/10/20/2732745.html 方式一: public FileStream ...
- Python开发程序:FTP程序
作业:开发一个支持多用户在线的FTP程序 要求: 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp se ...
- linux挂载移动硬盘
1. 安装ntfs-3g2. mkdir /mnt/disk3. mount -t ntfs-3g /dev/sdb /mnt/disk4.卸载 umount /dev/sdb
- CentOS-6 yum安装nginx php53 mysql55 搭建LNMP环境
1.导入外部软件库 01.rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noa ...
- asp.net MVC实现文章的上一篇下一篇
由于这个东西的原理没有什么难的(只是实现的时候有少量的坑),故直接上代码以便查阅.另:本文给出的Action附送了点击量统计. public ActionResult SingleNews(int? ...
- MFC通过ODBC方式连接mysql
一. 要安装mysql-connector-odbc驱动 二. 配置数据源 电脑的控制面板-管理工具-数据源ODBC-系统DSN-添加-选择刚刚安装的mysql odbc Driver 参考 http ...
- 遍历对象所有属性(json对象)
var response = { "status": 1, "message": "\u6210\u529f", "data&qu ...
- QT开发编译问题备忘
编译<Qt及Qt Quick开发实战精解> 的代码,编译出错,提示: Cannot find file: E:\学习资料\QT\<Qt及Qt Quick开发实战精解>代码\sr ...
- Python—I/O多路复用
一.I/O多路复用概念: 监听多个描述符的状态,如果描述符状态改变,则会被内核修改标志位,从而被进程获取进而进行读写操作 二.select,poll,epoll select模块,提供了:select ...