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#学习笔记>这本书的内容要点及网上各位大牛们的经验,没有半点废话 ...
随机推荐
- 使用Notepad++代替笨拙的Arduino IDE
Arduino自带的IDE 太不好用了,下面是用强大,轻量级,免费,开源,丰富插件的的Notepad++编辑器来打造Arduino开发环境 . 配置过程对新生来说可能有些繁琐,但是我尽力写的很详细了, ...
- C# 消息队列
阅读目录 1. 消息队列是什么? 2. 常见的消息队列框架有哪些? 3. MSMQ介绍 4. RabbitMQ介绍 消息队列是什么 简单的理解就是将消息添加一个队列中,使用时在从这个队列中取出来.那么 ...
- 深入理解asp.net里的HttpModule机制
刚工作的时候看<asp.net深入解析>,第一次知道HttpModule和HttpHandler.当时对我而言,它们不过就是两个新名词而已,仅仅知道工作原理但是理解的不深刻.随着经验的累积 ...
- ios开发xcode中设置代码块
在开发中有很多重复的代码,很多开发者把常用的代码做成代码块提高开发效率. 在xcode里选中代码块的时候总是很不容易,点击选中的代码(文字),不要移动和松开鼠标左键,当竖线变成像拉长了的x(我也不知道 ...
- 能套用的tab栏切换
效果: 在style.js文件里封装了一个Show函数,有4个参数,di(当前点击的按钮),num(按钮个数,也可以说是下面具体内容个数),divn(一个id前缀,这个例子里是ta,),active( ...
- PowerShell 常用命令
下载文件 http://powershell.com/cs/blogs/tips/archive/2012/10/11/downloading-files-from-internet.aspx Pow ...
- ANE 从入门到精通 --- 简单的Whatever
Flash还是很好的,不过国内没人用. Whatever了. 以下是ANE制作中的一点笔记 分享下 也留作备份 Step1 编写As3 Library package com.eran { impor ...
- VBA的打开关闭保存另存为等事件无法正常跑的原因
打开执行的代码需要写在thisworkbook的open事件下!!!!!如下图: VBA中事件分为三种:工作簿事件,工作表事件,窗体.控件事件. 工作簿事件发生在特定的工作簿中,如Open(打开工作簿 ...
- java 静态函数锁对象说明
在内存加载.class文件后,会自动创建一个对象,用于保存class的信息,与我们程序员手工创建的对象不一样.
- php 安装 sphinx
我的环境是 ubuntun ,所以 第一步 sudo apt-get install pear 第二,根据 php.net 里说的,去下载 sphinx. 第三,pecl install sphinx ...