js是运行在客户端的脚本语言,不需要编译。翻译一句执行语句。
作用:服务端开发node.js 桌面开发 ......
html、css 是标记语言,描述类语言。
浏览器分为两部分:渲染引擎,js引擎,渲染引擎用来解析html和css,js引擎解析js代码。
JS组成: js语法+dom(页面文档对象模型) + bom(浏览器对象模型)
1. JS输入输出语句
alert(msg) , console.log(msg) , prompt(msg)
prompt('请输入你的年龄');
alert('hello');
console.log('调试输出');
2. JS变量的使用
声明变量 var age
var age = 10;
var age = 10, name = 'super', sex = 2;
var age = prompt('请输入你的年龄');
alert('年龄是'+age);
只声明变量不赋值,是undefined。不声明不赋值直接使用某变量会报错。 不声明直接赋值使用不报错。
3. JS数据类型
js拥有动态类型,相同的变量可以作用不同的类型:
var x = 6; //数字型
x = 'hello'; //变为字符串型
3.1. 简单数据类型:
number = 0 , string = "" , boolean = false , undefined, null
2. 复杂数据类型: object
数字型number 默认值为0
var = 3;
var = 3.14;
//八进制
var num1 = 010;
//十六进制
var num2 = 0x3FF;
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);
1.7976931348623157e+308
5e-324
Infinity 代表无穷大,
-Infinity 负无穷
NaN , not a number 非数值
判断是否为非数值
console.log(isNaN(12)); //false
3.2字符串型String
单引号
外双内单或者外单内双
引号内使用转义字符 \n ,\\ , \' , \" , \t ,\b空格
console.log("哈哈哈哈\n红红火火恍恍惚惚");
var str = 'hello, js';
var len = str.length;
console.log(len);
多个字符串之间可以使用+进行拼接,其拼接方式为字符串+任何类型
3.3 布尔型 boolean
var flag = true;
var flag2 = false;
console.log(flag + 1);
console.log(flag2 + 1);
3.4 undefined null
var t;
console.log(t);
undefined 和 数字相加 结果是 NaN
var t = null;
console.log(t);
null 和 数字相加, null被看为0
3.5 typeof
var t = 12;
console.log(typeof t);
prompt 返回值是String类型
3.6 数据类型转换
3.6.1转为字符串类型
var num = 1;
num.toString();
String(num);
3.6.2 转为数字类型
var a = parseInt('123'); //向下取整
var b = parseInt('123aaa'); //自动去掉字母
var b = parseInt('aaa123aaa'); //NaN 遇到字母后面的全去掉
var c = parseFloat('12.3');
var str = '123';
var d = Number(str);
//隐式转换
console.log('12'-0);
console.log('123'-'120');
3.7 转为布尔类型
代表空,否定的值会被转换为false,如 '' 0 NaN null undefined
console.log(Boolean('')); //false
console.log(Boolean(0)); // true
console.log(Boolean(NaN)); // false
console.log(Boolean(null)); //false
console.log(Boolean(undefined)); //false
console.log(Boolean('hello')); //true
console.log(Boolean(12)); // true
4. 运算符
算数运算符 + - * / %
浮点数的最高精度是17位小数,但在进行算术计算时的其度远远不如整数,不要直接判断两个浮点数是否相等
console.log(0.1 + 0.2); //0.30000000000000004
18 == ’18‘ //true == 默认转换数据类型,会把字符串类型的数据转换为数字类型
=== 全等与 !== 不全等
18 === 18 // true
18 === '18' // false
5. 数组
数组中元素可以存放任意类型元素。
var ss = []; //创建一个空数组
var arr = [1,2,3,4,5];
var strs = ['a','bc','de'];
console.log(arr);
var cnt = new Array(); //创建了一个空数组
var arr2 = [1,2,'str',true];
push 和 pop 操作
var arr = [];
arr.push(1);
arr.push(2);
arr.push(3);
arr.pop();
console.log(arr);
var arr = [1,2,3,4,5,'str'];
var len = arr.length;
for(var i = 0; i < len; i++){
console.log(arr[i]);
}
//追加元素
var arr = [1,2,3];
arr[3] = 4;
arr[4] = 5;
console.log(arr);
6.函数
函数参数不需要写数据类型。即使写var也没有作用
function 函数名(形参名1,形参名2){
}
函数名(实参1,实参2);
function getSum(a,b){
var sum = a+ b;
return sum;
}
console.log(getSum(1, 2));
另外一种声明方式,getSum是函数名,不是变量名。
//var 变量名 = function(){};
var getSum = function(a,b){
return a+b;
}
console.log(getSum(1, 2));
当我们不确定有多少参数传递的时候,可以用arguments来获取。他是函数的一个内置对象。
arguments是伪数组,具有length属性,按照索引的方式进行存储,没有真正数组的一些方法 pop() push()
function solve(){
console.log(arguments);
}
solve(1,2,3,)
js在es6 的时候新曾块级作用域
if {} for{}