记录自己javascript的小知识

虽然都是一些很简单的东西,也许我以后再回头看感觉都没有记的必要,但是现在作为初学者我需要去记录的我学习历程,此页也会随着我的学习而不断修改。
对象
javascript的对象就是一组由键和值组成的无序集合:

var people = {
name:'weiwei',
age:16,
hashouse:false;
advantage:['young','kind','healthy'],
girlfriend:null
};
alert(people.age);

话说我也是才知道这个博客有这么一个功能,有时间我要把之前的笔记代码内容都修改一下。
JavaScript的对象的键都是字符串,而键的值可以是可以是任意数据类型,每个键也可以称为对象的属性,比如peopleage属性就是16,如果想要获取对象的属性值可以使用对象名.属性的方式:

people.name;//"weiwei"
people.girlfriend;//null

isNaN()
在js里有个特殊的数——NaN,它与所以其它数都不相等,包括它自己,所以就需要isNaN()来对它进行判断:

isNaN(NaN);//true

null
0是一个数值,""表示一个长度为0的字符串,而null就表示空,还有一个比较相似的东西叫undefined,他表示未定义,null表示空的值,undefined表示值未定义,不过一般只在判断函数参数是否有传递的时候才会使用undefined。
变量
在js中,变量通过=来赋值,且可以作为任意数字类型,number,字符串,null,布尔都可以,变量名可以用大小写的英文,数字,$和_的组合,但是不能用数字开头,甚至使用中文也可以,但是最好不要,申明一个变量的时候使用var语句,且一个变量可以被多次赋值,但是只能使用var申明一次;

var ww="weiwei";//ww是字符串weiwei
ww=16;//ww是16

这种变量本身数据类型不固定的就叫动态语言,而反之就是静态语言,比如java的赋值语句如下;

int a=3;//a数据类型为整型
a="weiwei";//错误,字符串不能赋值给整型变量

如果想要显示变量输出结果,可以使用console.log(),打开控制台就可以看到,好处是没有弹窗。
strict模式
其实在申明变量的时候不使用var来申明也是可以生效的,但是这样会导致变量变成全局变量,如果在同一个页面中的不同js文件中,都使用了同一个变量名称,那么全局变量相互干扰,会产生很多错误结果,所以需要使用var来申明,这样就是局部变量,只会在自己所在的函数体内生效。而为了规范化js代码,ECMA在后续规范里提出了strict模式,在strict模式里要求必须使用var来申明变量,如果不使用var申明的变量直接使用的话就会运行错误,具体启动strict模式的方法就是在js第一行加上

"use strict"

这是一个字符串,不支持strict模式的浏览器会把它当作一个字符串来运行,支持的将开启strict模式来运行javascript。

"use strict"
ww="weiwei";
console.log(ww);

JavaScript中数组的比较
js中的数组是不能直接用===进行直接比较的,返回的都是false;

var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
var aCopy = arr.slice();
if (aCopy == arr){
alert("正确");
} else {
alert("错误");
}; 

slice对应的就是字符串的substring(),可以输入序号来索引参数,包括开始参数不包括结束参数,如果不输入序号则是返回全部元素;

var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C']
arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G']

如果想比较两个数组的话,可以先使用toString()将其转化为字符串再进行比较,这里注意S要大写;

var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
var aCopy = arr.slice();
if (aCopy.toString() == arr.toString()){
alert("正确");
} else {
alert("错误");
}; 

如果元素相同,但是顺序不同的话,数组也是不一样的,这时可以先进行排序再比较;

var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
var aCopy = arr.slice();
if (aCopy.sort().toString() == arr.sort().toString()){
alert("正确");
} else {
alert("错误");
}; 

splice
splice是数组的“玩能方法”,可以增加或删除数组中的元素;

var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];
// 从索引2开始删除3个元素,然后再添加两个元素:
arr.splice(2, 3, 'Google', 'Facebook'); // 返回删除的元素 ['Yahoo', 'AOL', 'Excite']
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
// 只删除,不添加:
arr.splice(2, 2); // ['Google', 'Facebook']
arr; // ['Microsoft', 'Apple', 'Oracle']
// 只添加,不删除:
arr.splice(2, 0, 'Google', 'Facebook'); // 返回[],因为没有删除任何元素
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']

顺便注意一下,splice返回的元素问题,在splice后面接的方法都是其返回的元素,要注意。

遍历时为什么要用[]

let  obj={id:1,name:'zzh'}
for(let k in obj){
console.log(obj[k])
}

这里的console.log(obj[k])如果改成console.log(obj.k),就会变成在obj里寻找这个k这个属性,你会发现返回两遍k:undefined,如果使用[]才是遍历所有属性名,并输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值