ECMAScript是js语言的标准。
document object model (文档对象模型)
browser object model (浏览器对象模型) 详细页面点击原生js操作DOM。
js有6种数据类型,4种基本数据类型、Object和function类型。六种数据类型,typeof返回的也是6个字符串:number、string、boolean、undefined、object、function。
五种:字符串(String)数字(number)空(Null)未定义(undefined)布尔(Boolean)
生成一个介于某两个值之间的随机数
/** * 生成一个介于某两个值之间的随机数 * @param min 最小值 * @param max 最大值 * @returns {number} 生成的最技术 */ var getRandom = function(min, max) { return Math.floor(Math.random() * (max - min + 1) + min); }用处:如果将来准备存储一个对象,我们可以先给它一个值叫null。
var n = null; // 没有值或者暂时没有值 console.log(typeof n); // object console.log(number(n)); //Uncaught ReferenceError: number is not defined复杂数据类型,由简单数据类型构成。
js的数组和java的数组存储形式不太一样。java数组里存储的数据类型是同一类型的数据,js的数组存储的数据可以是不同类型的数据。
var arr = [true, 'abc', 123, {}, [], function() {}]; console.log(typeof arr[0]);//boolean console.log(typeof arr[1]);//string console.log(typeof arr[2]);//number console.log(typeof arr[3]);//object console.log(typeof arr[4]);//object console.log(typeof arr[5]);//function console.log(typeof arr);//object判断数据类型:typeof(变量) typeof,返回六个字符串:number、 string、 boolean、 object、undefined、 function 示例:
var age = 3; var PI = 3.14; console.log(typeof age); // number console.log(typeof(PI)); // number //函数类型 var fn = function() {}; console.log(typeof fn); // function可以将任何数据类型转成字符中
不能针对null和undefined类型
var a = 10; console.log(String(a));//10 console.log(typeof String(a));//string var b = 'abc'; console.log(String(b));//abc console.log(typeof String(b));//string var c = true; console.log(String(c));//true console.log(typeof String(c));//string var n = null; console.log(String(n));//null console.log(typeof String(n));//string var m = undefined; console.log(String(m));//undefined console.log(typeof String(m));//string //toString()方法 console.log(a.toString());//10 console.log(b.toString());//abc console.log(c.toString());//true console.log(n.toString());//报错 //Uncaught TypeError: Cannot read property 'toString' of null console.log(m.toString());//报错 //Uncaught TypeError: Cannot read property 'toString' of undefined(1)Nunber(varliable); 可以转任何数据类型,只有能转成功或不能转成功之分。转成功就是数字,转不成功就是NaN
var a = 10; console.log(Number(a));//10 console.log(typeof Number(a));//number /** * NaN --- not a number,但是它是数值类型 */ var b = 'abc'; console.log(Number(b)); // NaN console.log(typeof Number(b));//number var c = false; console.log(Number(c)); // true是1 false是0 console.log(typeof Number(c));//number //特殊:null转number为0 var n = null; console.log(Number(n)); // 0 console.log(typeof Number(n));//number var m = undefined; console.log(Number(m)); // NaN console.log(typeof Number(m));//number console.log(Number('10px'));//NaN console.log(Number('13.34元'));//NaN转整数;如果转不成功,则返回NaN。
console.log(parseInt('10px')); // 10 console.log(parseInt('a10px')); // NaN console.log(parseInt('10px56c'));//10 console.log(parseInt('10.34亿'));//10转小数 ; 如果转不成功,则返回NaN
console.log(parseFloat('10px56c'));//10 console.log(parseFloat('10.34亿'));//10.34 console.log(parseFloat('a10.3.4亿'));//NaN注意:
NaN同谁都不相等,包括它自己任何涉及NaN的操作返回的都是NaNtypeof查看返回的是number console.log(NaN == NaN);//false console.log(null == null);//true console.log(undefined == undefined);//true console.log('abc' - 5 + 3);//NaN console.log(typeof NaN);//number算数运算符有:+ - * / % ++ --。
只要有一边是字符串,哪么另一边就转成字符串,变成字符串连接。如果两边都是数字,则可以正常进行加减乘除取余运算 //情况一:运算符左边字符串的数字,右边数字。 var a = '15'; var b = 5; //加法操作例外:字符串拼接 console.log(a + b)//155 //其他正常执行 console.log(a - b);//10 console.log(a * b);//75 console.log(a / b);//3 console.log(a % b);//0 //情况二:运算符左边数字,右边数字字符串。 //结果和情况一相同,“+”加法操作仍然是字符串拼接 var a = 15; var b = '5'; //加法操作例外:字符串拼接 console.log(a + b);//155 //其他正常执行 console.log(a - b);//10 console.log(a * b);//75 console.log(a / b);//3 console.log(a % b);//0比较运算符判断两个变量的大小,是否相等
运算符名称符号大于 大于等于> >=小于 小于等于< <=等于 不等于= = !=全等于= = =不全等于!== // == 相等,值是否相等,会发生类型转换 console.log(1 == '1'); // true console.log(true == 1); // true //特殊: console.log(null == undefined); // true,除此之外,它们不能和其它的值进行比较 // === 全等,值和类型都要相等才相等,不会发生类型转换 console.log(1 === '1'); // false console.log(true === 1); // false console.log(null === undefined); // false console.log(null !== undefined); // true console.log(null != undefined); // false“与“”和“或” :连接两个或多个条件。 “非”: 为取反。
名称运算符说明与&&都为真才为真或有一个为真就为真非!取反 if (!!false) { alert('条件成立'); }格式:条件 ? 代码一 : 代码二; 如果条件为真,则执行代码一,否则执行代码二
var n = 90 >= 60 ? '及格' : '不及格'; console.log(n);//及格条件如果只是两三个分支,就用if-else
var age = 7; if (age >= 7) { console.log('上学');//上学 }条件如果是三个以上的分支,建议使用switch
var n = prompt('请输入成绩'); if (isNaN(n)) { // 不是数字 alert('哥们,请输入数字'); } else if (n < 0 || n > 100) { // 不在0--100之间 alert('哥们,请输入0--100的数字'); } else { // 0--100之间 switch (true) { case n < 60: alert('不及格'); break; case n >= 60 && n < 70: alert('及格'); break; case n >= 70 && n < 80: alert('一般'); break; case n >= 80 && n < 90: alert('良好'); break; case n >= 90 && n < 100: alert('优秀'); break; default: alert('满分'); } }