javascript第二遍基础学习笔记(二)
一、操作符
1、一元操作符:
自加自减(分前置和后置2种):++、--
区别:前置的先自加或自减,后进行计算;而后置的是先进行计算,后自加或自减(在其会产生负面影响时才能体现区别);
var i=;
i++; //++i
console.log(i); // 没有负面影响的情况下:2/2
var a = (++i)+i;
var b = (i++)+i;
console.log(a); //
console.log(b); //
其适合任何类型,非数字类型的会转换成数字类型 Number() ;(基础类型的字面量不能使用,因为其是不可变的)
加、减运算符:+、-
其操作数不是数字类型时,会对操作数进行 Number() 类型转换;
2、位操作符:
正数:原码表示;
负数:补码表示(反码+1);
按位非(~):求反码;
按位与(&):都是1是1,另外的是0;
按位或(|):有1是1,都是0是0;
按位异或(^):相同时1,不相同是0;
左移(<<):空位补0;
右移(>>带符号位):空位补符号位;
右移(>>>不带符号位):空位补0;
3、布尔操作符:
逻辑非(!):返回一个相反的布尔值;
逻辑与(&&):在都是布尔值时返回布尔值,存在不是布尔值时返回不一定是布尔值;
逻辑或(||):在都是布尔值时返回布尔值,存在不是布尔值时返回不一定是布尔值;
(注:逻辑与和逻辑或都是短路操作符)
4、加减乘除:
5、关系操作符(>、>=、<、<=):都是数值,进行数值比较,都是字符串进行字符串比较,另外的转换成数值比较;
6、相等操作符(==、===):相等与全等,全等不进行类型转换;
7、三木运算符( ? : ):;
......
二、语句:
1、if语句:对其的判断条件为非布尔值时进行Boolean()转换成布尔值;
2、do-while:至少执行一次循环体;
3、while:
4、for语句:
5、for in 语句:用来枚举对象属性;
6、lable语句:
7、break和continue语句:
8、with语句:可以修改作用域,将代码的作用域设置到一个对象中; with(... ){ ... }
9、switch语句:
三、变量、作用域和内存:
1、值类型和引用类型:值类型的变量存放具体值,而引用类型的是存放其的引用;
2、函数的参数的传递只能传递值,所以传递引用类型时,传递的是其引用;
3、作用域是定义时候的非调用时候的;
function a(){
var t="aa";
function b(){
console.log(t);
}
return b;
}
var t="ww";
var b=a();
b(); //aa 并非是ww
4、延长作用域链:try-catch的catch块和with;
5、js没有块级作用域;
四、数组(Array):
javascript的一个数组可以存储任何类型的值(不同于另外语言的数组);数值的大小可以动态调整;
检测数组:可以用instanceof检测,但在多个框架里面,由于每个框架里的Array构造函数不同,其检测会有问题;但还是可以用ECMAScript5 提供了一个方法可以检测或使用Object原型的toString()方法检测;
//ECMAScript5里提供个方法
Array.isArray(xx);
//Object原型的toString()
Object.toString.call(xx);
转换方法:toLocaleString()、toString()、ValueOf()和join();
数组的方法:
push():尾端添加
pop():尾端删除
shift():头部删除
unshift():头部添加
reverse():反转数组顺序
sort():不带参数,一字符串比较升序(小到大);接受一个比较函数,函数带2个参数,返回小于零的,第一个参数在前
concat():追加拼接数组
slice():截取子数组,2个参数,第二个可选,可以使负数
splice():可以删除、插入、替换;前2个参数表示起始位置、删除数目,后面的参数是要插入的
indexOf()和lastIndexOf():
ECMAScript5中的方法:
every():
filter():
forEach():
map():
some():
reduce():
reduceRight():
五、Date类型:
其使用UTC 1970年1月1日午夜(零时)开始进过的毫秒数来保存日期。
最新文章
- 北大OJ 1001题
- 读书笔记_Effective_C++_条款四十七:请使用trait classes来表示类型信息
- Nginx 笔记与总结(4)配置 server 访问日志
- [SAP ABAP开发技术总结]ALV
- 用Android++在Visual Studio中用C/C++开发Android应用
- HDU5039--Hilarity DFS序+线段树区间更新 14年北京网络赛
- iOS开发面试题整理(二)
- 【android】下载文件至本应用程序的file文件夹或者sdcard
- 迷你MVVM框架 avalonjs 0.82发布
- 关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- Maven项目中,系统设置的CLASSPATH环境变量问题
- ES6部分知识点总结
- 学习笔记CB007:分词、命名实体识别、词性标注、句法分析树
- vue实现筛选功能,文字选中变色
- springboot13 发布和监听事件
- 精选!15个必备的VSCode插件
- usb枚举
- 一、springMVC、freemarker页面半自动静态化
- axure学习点
- 【VBA编程】10.自定义集合
热门文章
- 合并两个vectcor&mdash;&mdash;2013-08-26
- mac 终端中添加tree命令显示文件目录结构
- Eclipse下使用Hadoop单机模式调试MapReduce程序
- 我给自己的Sass+Compass,在Windows下写个bat,快速cd到我的sass目录
- 初次使用nodejs的问题
- 关于ASPOSE.WORD使用上的一个小问题
- html5 video.js 使用及兼容所有浏览器
- SQL Server调优系列进阶篇 - 查询优化器的运行方式
- /etc/resolv.conf文件详解
- stm32中.bss和.data段是在哪里初始化的