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; // 18
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.

时间: 2024-08-26 22:52:04

JavaScript学习笔记及知识点整理_1的相关文章

JavaScript学习笔记及知识点整理_3

1.js的事件冒泡及阻止方法:事件冒泡的概念:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window).换言之,也就是说,如果子类对象的事件被激活,那么父类对象的同类事件也会被激活,并按照有子类对象一直向外延

计算机网络学习笔记--网络层知识点整理

为什么要划分网络层? 不用的网络有不同的协议和标准,为了可以在不同网络之间互访,共享双方的资源,并且还要保持每个计算机网络本来的独立性,所以才划分出了网络层,并制定了专门的协议来负责网络间通信. 网络层的主要功能: 1.屏蔽网络差异,提供透明传输. 为传输层提供服务:面向连接的网络服务(虚电路服务)和无连接的网络服务(数据报服务). 2.为网络通信提供路由选择 什么是路由选择? 按一定的原则和路由选择算法在多个节点的通信子网中选择一条到达目的节点的最佳路径的过程. 确定路由选择的策略成为路由算法

kafka学习笔记:知识点整理

一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多消息队列所采用的"插入-获取-删除"范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕. 3.扩展性: 因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可. 4.

[Big Data - Kafka] kafka学习笔记:知识点整理

一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多消息队列所采用的"插入-获取-删除"范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕. 3.扩展性: 因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可. 4.

JavaScript学习笔记——对象知识点

javascript对象的遍历.内存分布和封装特性 一.javascript对象遍历 1.javascript属性访问 对象.属性 对象[属性] //字符串格式 2.javascript属性遍历 for in 二.内存分布 三.对象的特性之封装 把对象所有的组成部分组合起来,尽可能的隐藏对象的部分细节,使其受到保护. 只保留有限的接口和外部发生联系. 一.工厂函数 二.构造函数 三.prototype方法 四.混合方法

kafka学习笔记:知识点整理(一)

一.kafka 架构 1.1 拓扑结构 如下图: 图.1 1.2 相关概念 如图.1中,kafka 相关名词解释如下: 1.producer:  消息生产者,发布消息到 kafka 集群的终端或服务. 2.broker:  kafka 集群中包含的服务器. 3.topic:  每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的. 4.partition:  partition 是物理上的概念,每个 topic 包含一个或多个 partition.kafka 分配

kafka学习笔记:知识点整理(二)

三.kafka HA 3.1 replication 如图.1所示,同一个 partition 可能会有多个 replica(对应 server.properties 配置中的 default.replication.factor=N).没有 replica 的情况下,一旦 broker 宕机,其上所有 patition 的数据都不可被消费,同时 producer 也不能再将数据存于其上的 patition.引入replication 之后,同一个 partition 可能会有多个 replic

阅读《LEARNING HARD C#学习笔记》知识点总结与摘要三

最近工作较忙,手上有几个项目等着我独立开发设计,所以平时工作日的时候没有太多时间,下班累了就不想动,也就周末有点时间,今天我花了一个下午的时间来继续总结与整理书中要点,在整理的过程中,发现了书中的一些不足,我在以下的博文中都有说明,大家如果有这本书的可以对照着知识点及书本相结合的方式来看,没有这本本书的也可以对照着我整理的知识要点进行实际编码测试与学习,希望能对大家有所帮助,如果觉得可以的话,还请推荐哦,谢谢! 阅读<LEARNING HARD C#学习笔记>知识点总结与摘要系列文章从这篇博文

Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript学习笔记(3--this/call/apply) Java程序猿的JavaScript学习笔记(4--this/闭包/getter/setter) Java程序猿的JavaScript学习笔记(5--prototype) Java程序猿的JavaScript学习笔记(6--面向对象模拟) Java程