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#学习笔记>这本书的内容要点及网上各位大牛们的经验,没有半点废话 ...
随机推荐
- zepto源码--核心方法3(属性相关)--学习笔记
继续$.fn方法 今天主要介绍几个跟属性操作相关的方法attr, removeAttr, prop, data attr 读取或设置dom的属性.如果没有给定value参数,则读取对象集合中第一个元素 ...
- Samba配置
https://wiki.samba.org/index.php/Samba_AD_DC_Port_Usage 安装后开放端口 1 ACCEPT tcp -- 0.0.0.0/0 ...
- MacOS10.11的/usr/bin目录不可写后class-dump的处理办法
许多升级了OSX 10.11的朋友在配置class-dump的时候,会发现书上推荐的class-dump存放目录/usr/bin不再可写,如下所示: 192:~ snakeninny$ touch c ...
- LeetCode Missing Ranges
原题链接在这里:https://leetcode.com/problems/missing-ranges/ 题目: Given a sorted integer array where the ran ...
- h5的radio和check选中和不选中返回的checkd值
h5的radio和check选中和不选中返回的checkd值 alert($('input[type=checkbox]').attr('checked')); //存在返回checked,不存在返回 ...
- js的实参是按值传递还是按引用传递
1.如果是基本类型,则是按值传递 var str = 'one';function f(string) { string = 'two';}f(str);console.log(str); // ...
- ANSI_NULLS、QUOTED_IDENTIFIER
数据库服务器重启后,游戏登录提示“您输入的用户名不存在,请重新注册!”重启前特意登录过平台,基本操作都正常.这之间并没对数据库做任何修改,怀疑是应用程序服务端的问题.开启跟踪监控登录过程,只跟踪到一个 ...
- Vcenter server 5.5安装部署
1.安装VMware ESXi Server 虚拟主机安装方法请看本人博客 "实践记忆": http://www.cnblogs.com/zoulongbin/p/5896836. ...
- 分享:一款前端布局工具(alloydesigner)
困扰 设计师给出静态的高保真图片, 需要前端工程师按照高保真图,进行html编码. 前端工程师, 一般工作方法为: 打开图片,一边看下图片, 一边编写相应的html代码. 这样有两个问题: 1. 前端 ...
- 【Selenium】4.创建你的第一个Selenium IDE脚本
http://newtours.demoaut.com/ 这个网站将会用来作为我们测试的网址. 通过录制来创建一个脚本 让我们来用最普遍的方法——录制来创建一个脚本.然后,我们将会用回放的功能来执行录 ...