1、toString()方法,返回字符串,但是null和underfined没有这个方法。toString() 可以转化为不同进制的字符串。
var n=10;
alert(n.toString(2)); //1010
String()方法,(若值是nul则返回null;若值是underfined则返回underfined)。
var n=null;
alert(String(n));
两者都是讲其他类型的变量转化为字符串的方法;注意两者的书写方式。
2、操作符:递增和递减
前置:变量的值是在语句被求值以前改变的。
var n=2;
var m=--n+1;
console.log(n,m); //1, 2
后置:递增递减操作在包含他们的语句被求值后才执行
var n=2;
var m=n--+1;
var q=n+1; (由于上一行代码已经执行过后置递减运算,此时的n已经为1)
console.log(n,m,q); //1,3,2 (n的最终值都是一样的,但是执行的时候不同)
3、布尔操作符
var obj = pObject || bObject;
变量obj 将被赋予等号后面两个值中的一个。如果pObject 的值不是null,那么它的值将被赋予obj;如果是null,则将bObject赋值给obj。
逻辑与 && 和逻辑或 || 都是短路操作符。
4、关系操作符 > < (字符串比较时候的奇怪现象)(字符串和数值比较,先把字符串转换为数值)
var re="Bhhh" < "annn"; //true
- 字符串的比较是对应的字符编码值,字母B的字符编码为66,而字母a的字符编码为97。
var re="23" < "3"; //true
- “2”的字符编码是50,“3”的字符编码是51
- NaN与任何操作数进行关系比较,结果都是false。NaN不等于NaN。
- null 与 underfined 是相等的
null == undefined ; //true 相似的值
null === undefined; //false 不同类型的值
5、 instanceof 用于检测是什么类型的对象(array、object)
typeof 检测基本数据类型(boolean、number)
6、 函数的参数是按值传递的
function setName(obj) {
obj.name = 'zjzhome';
obj = new Object();
obj.name = 'zjz'
}
var person = new Object();
setName(person);
console.log(person.name); // zjzhome
7、for...in 和for...of的区别 Array、Map和Set都属于iterable类型。 for ... in循环遍历对象属性名称,将把name包括在内,但Array的length属性却不包括在内。
var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x in a) {
console.log(x); // '0', '1', '2', 'name'
}
for ... of循环则完全修复了这些问题,它只循环集合本身的元素:
var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x of a) {
console.log(x); // 'A', 'B', 'C'
}
8、重排序方法:reverse()和sort() sort() :
values=[0,1,5,15,13];
values.sort(); //(5) [0, 1, 13, 15, 5]
正常升序:
function compare (value1,value2) {
if (value1 < value2) {
return -1;
} else if (value1 >value2) {
return 1;
} else {
return 0;
}
}
values=[0,1,5,15,13];
values.sort(compare); //(5) [0, 1, 5, 13, 15]
reverse():
values=[0,1,5,15,13];
values.reverse(); //(5) [13, 15, 5, 1, 0]
9、迭代方法:map()
map() 返回一个数组,而这个数组中的每一项都是在原始数组中的对应项上运行传入函数的结果。(方法适用于创建包含的项与另一个数组一一对应的数组)
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
10、归并方法:reduce()
reduce() 函数返回的任何值都会作为第一个参数自动传给下一项。
var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
return x + y;
}); // 25
11、RegExp类型
var exp=/pattern/flags
pattern(模式):正则表达式;
flags(标志):g(全局global)、i(不区分大小写case-insensitive)、 m(多行multiline);
12、function函数 (函数声明和函数表达式)
函数声明:解析器通过函数声明变量提升,读取并将函数声明添加到执行环境中。即使声明函数的代码在调用它的代码后面,JavaScript引擎也能把函数声明提升到顶部。
alert (sum(10,10)); //完全能够输出 20
function sum(num1.num2){
return num1+num2;
}
作为值的函数:
function add(num){
return num+10;
}
function numberFunction(s,o){
return s(o); //第一个参数表示函数,第二个参数表示值
}
var result = numberFunction(add,10);//要访问函数的指针而不执行函数的话,必须去掉函数名后面的大括号
alert(result);
13、函数内部属性:
函数内部的一个对象arguments有一个名叫callee的属性,返回正在被执行的对象。
function factorial(num){ //用于迭代
if(num<=1){
return 1;
}else {
return num*arguments.callee(num-1) //消除紧密耦合现象
}
}
14、call()和apply() 扩充函数赖以运行的作用域
call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的。
var func1 = function(arg1, arg2) {
...
};
就可以通过 func1.call(this, arg1, arg2); 或者 func1.apply(this, [arg1, arg2]); 来调用。其中 this 是你想指定的上下文,call 需要把参数按顺序传递进去,而 apply 则是把参数放在数组里。
慕课网学习入门JavaScript:
15、prompt消息对话框:
语法:
prompt(str1, str2);
参数说明:
str1: 要显示在消息对话框中的文本,不可修改 str2:文本框中的内容,可以修改
返回值:
1. 点击确定按钮,文本框中的内容将作为函数返回值 2. 点击取消按钮,将返回null
16、JavaScript-打开新窗口(window.open)
open() 方法可以查找一个已经存在或者新建的浏览器窗口。
语法:
window.open([URL], [窗口名称], [参数字符串])
参数说明:
URL:可选参数,在窗口中要显示网页的网址或路径。如果省略这个参数,或者它的值是空字符串,那么窗口就不显示任何文档。 窗口名称:可选参数,被打开窗口的名称。 1.该名称由字母、数字和下划线字符组成。 2."_top"、"_blank"、"_self"具有特殊意义的名称。 _blank:在新窗口显示目标网页 _self:在当前窗口显示目标网页 _top:框架网页中在上部窗口中显示目标网页 3.相同 name 的窗口只能创建一个,要想创建多个窗口则 name 不能相同。 4.name 不能包含有空格。 参数字符串:可选参数,设置窗口参数,各参数用逗号隔开。
17.