javascript学习笔记(2)--基础语法

关于环境的话,我就在记事本里写,保存为html,然后在firefox里面测试,
当然写代码比较好的环境是notepad啦
顺便分享一下
notepad
提取码:qng8

firefox里面按F12,或者右键检查元素,然后选择控制台,就可以开始写代码了,比较不错的临时环境…我就是这样弄得

NaN(not a numbei)一般出现在算术运算的结果不是数字(如求负数的平方根)
判断一个数是不是NaN

isNaN(NaN); 
 true 
 isNaN(1); 
false

字符串的拼接

var message = '你好, ' + name + ', 你今年' + age + '岁了!';
var message = `你好 ${name} 你今年${age}岁了!`; 

有两种写法,第一种就是用片段型的一部分一部分写,中间用+连接,变量不需要引号,其他的内容用’'号引起来
第二种就是一句话,用的是键盘上1左边的`这个符号,不是引号…(一定要记住)然后变量用 格 式 就 可 以 , 然 后 会 自 动 把 {}格式就可以,然后会自动把 {}的内容用变量的值替换

在字符串里有’,或者"的时候,需要用到转义符,有时候会出现这种问题,默认的话是’'和最近的配对,如果不转移的话会报错

var x='I\'m \"OK\"!';

获得字符串长度

var s = 'Hello, world!'; 
s.length; // 13 

toUpperCase()
把一个字符串全部变为大写,但这个字符串本身不会改变,只会输出一个变化后的值,如果需要改变的话用赋值语句即可
toLowerCase()把一个字符串全部变为小写

var s = 'Hello'; 
s.toUpperCase(); // 返回'HELLO' 
s;//返回"Hello"s本身无任何变化
var lower = s.toLowerCase(); // 返回'hello'并赋值给变量lower ,s本身也无任何变化
lower; // 'hello' 

indexOf()会搜索指定字符串或者字符出现的位置:

var s = 'hello, world'; 
s.indexOf('world'); // 返回7 ,对应的第一个字符的位置
s.indexOf('World'); // 没有找到指定的子串,返回-1 
s.indexOf('e');//返回1
s.indexOf('o');//返回4,第一个出现的位置

substring()返回指定索引区间的子串:

var s = 'hello, world' 
s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello' 
s.substring(7); // 从索引7开始到结束,返回'world'
s.substring();//返回全部

===不仅判断值,也判断属性

1=='1' //true
1==='1'//false

数组操作
javascript的数组不止可以储存数字,字符,字符串都可以

获得数组长度

var arr=[1,2,'a'];
arr.length; //返回3

indexOf返回值对应的位置

var arr=[1,2,'a'];
arr.indexOf(1); //返回0

片段截取
slice(a,b)从a开始截取到b为止,不包括 b

var arr=[1,2,3,'a','asda'];
arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: [ 1, 2, 3 ],arr本身无变化
arr.slice(3); // 从索引3开始到结束:[ "a", "asda" ]
如果不给slice()传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array
var b=arr.slice();//b变成了[ 1, 2, 3, "a", "asda" ]
a===b//false
arr.slice()===arr//false提取的字串和原字符不相等
arr.slice()==arr//false

push()向Array的末尾添加若干元素,pop()则把Array的最后一个元素删除掉:

var arr=[];
arr.push('A', 'B'); // 返回Array新的长度: 2
arr.pop(); // pop()返回'B' 

如果要往Array的头部添加若干元素,使用unshift()方法,shift()方法则把Array的第一个元素删掉:

var arr=[1]; 
arr.unshift('A', 'B'); // 返回Array新的长度: 3
arr;// [ "A", "B", 1 ]
arr.shift();//返回'A'

sort()可以对当前Array进行排序,它会直接修改当前Array的元素位置,直接调用时,按照默认顺序排序修改(a被修改了)

var a=[2,1,'A'];
a.sort();//返回[ 1, 2, "A" ]

reverse()把整个Array的元素给掉个个,也就是反转(a被修改了)

var a=[2,1,'A'];
a.reverse();//返回[ "A", 1, 2 ]

splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素:
splice(begin,num,value)
begin时开始的索引值,num是删除的个数,value是添加的元素的值,可以为空,添加的位置就是begin的位置

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'] 

concat()方法把当前的Array和另一个Array连接起来,并返回一个新的Array: 请注意,concat()方法并没有修改当前Array,而是返回了一个新的Array。
实际上,concat()方法可以接收任意个元素和Array,并且自动把Array拆开,然后全部添加到新的Array里:

var a=[1];
a.concat('1');//返回Array [ 1, "1" ]
a;//Array [ 1 ],没有变化
a.concat('1',['a',2]);// [ 1, "1", "a", 2 ]自动拆开里面的数组

join()方法是一个非常实用的方法,它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串

var arr=[1,2,3,'adad'];
arr.join('233');//返回"123322333233adad",arr无变化

小结一下
原array改变的有splice,reverse,sort,shift,unshift,pop,push,

原array不改变的有join,concat,slice,.substring,toUpperCase,toLowerCase

var s="xixi";
s[0]='s';
s;//xixi

不会报错,但没有效果

访问属性是通过.操作符完成的,但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用’'括起来,

var xiaohong = { 
name: '小红', 
'middle-school': 'No.1 Middle School' 
};

xiaohong的属性名middle-school不是一个有效的变量,(因为有-)就需要用’'括起来,访问这个属性也无法使用.操作符,必须用[‘xxx’]来访问

xiaohong['middle-school']; // 'No.1 Middle School' 
xiaohong['name']; // '小红' 
xiaohong.name; // '小红' 

如果我们要检测xiaoming是否拥有某一属性,可以用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

如果in判断一个属性存在,这个属性不一定是xiaoming的,它可能是xiaoming继承得到的,比如说像toString这个是系统函数,但也认为xiaoming继承了

'toString' in xiaoming; // true 

因为toString定义在object对象中,而所有对象最终都会在原型链上指向object,所以xiaoming也拥有toString属性

要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法

var xiaoming = { 
name: '小明' 
};
xiaoming.hasOwnProperty('name'); // true 
xiaoming.hasOwnProperty('toString'); // false

删除属性,如果这个属性不在对象里,也不会报错,只是没效果

var xiaoming = { 
name: '小明', 
birth: 1990, 
school: 'No.1 Middle School', 
height: 1.70, 
weight: 65, 
score: null 
};
'school' in xiaoming//true
delete xiaoming.school//true
'school' in xiaoming//false
delete xiaoming.school//true

JavaScript把null、undefined、0、NaN和空字符串’’"视为false,其他值一概视为true

console.log()
在控制台输出信息,控制台需要可见 (浏览器按下 F12 打开控制台)

prompt(text,defaultText)
text可选。要在对话框中显示的纯文本。defaultText可选,默认的输入文本如果用户不输入的话就会返回的是默认文本
如果用户单击提示框的取消按钮,则返回 null。如果用户单击确认按钮,则返回输入字段当前显示的文本
在用户点击确定按钮或取消按钮把对话框关闭之前,它将阻止用户对浏览器的所有输入。在调用 prompt() 时,将暂停对 JavaScript 代码的执行,在用户作出响应之前,不会执行下一条语句

parseFloat() 函数可解析一个字符串,并返回一个浮点数
该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字.

该函数往往和prompt一起使用,因为在prompt里面不管是输入字符还是数字都返回的是字符串,但有时候我们需要的是数字,所以需要用这个函数

看之前的script教程,如果要提取属性,不能用in,因为会有对象继承的属性,但我发现好像…没有

var o = { 
name: 'Jack', 
age: 20, 
city: 'Beijing' 
};
for (var key in o) { 
alert(key); // 'name', 'age', 'city' 
}
for (var key in o) { 
if (o.hasOwnProperty(key)) { 
alert(key); // 'name', 'age', 'city' 
} 
}
}

两个效果好像一样
由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for … in循环可以直接循环出Array的索引,不过索引是’0’,‘1’,‘2’,不是数字是字符

var a = ['A', 'B', 'C']; 
for (var i in a) { 
alert(i); // '0', '1', '2' 
alert(a[i]); // 'A', 'B', 'C' 
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值