5.15js基础学习
* 1.什么是js
* 2.如何运行
* 3.如何编写和调试js
* 4.变量
* 5.常量
* 6.数据类型
* 7.运算符和表达式
1.什么是js
专门编写交互的程序语言
2.如何运行
浏览器:内容排版引擎 js解释引擎
内容排版引擎:专门解析HTML和渲染css的软件
js解释引擎:专门解释,并执行js程序的软件
解释:默认从上向下,读一行,执行一行。后读到的相同内容,会覆盖先读到的
脚本:不需要预编译,边解释边执行的程序
3.如何编写和调试js
1.独立安装的js解释器中
2.调试js程序:都是在console中
4.变量
内存中存储一个数据的存储空间,再起一个名字
1.声明 var 变量名 仅声明,但暂未赋值,默认值为undefined
2.赋值 var 变量名=值 在声明同时,初始化变量的值
3.取值 console.log(变量名)
var sname = "好";
sname1 = "好1"; //未声明的变量也可赋值 强烈建议使用var声明
console.log(sname);
console.log(sname1);
//console.log(sname2);
// 未声明的变量不可使用取值 报错Uncaught ReferenceError: sname2 is not defined
5.常量
一旦初始化,值不能改变的量
const 常量名 = 值; 常量名都要用大写名称
const PI = 3.1415926;
console.log(PI);
6.数据类型
2大类:原始类型的值和引用类型的对象
原始类型: Number String Boolean undefined null
引用类型:值没有直接保存在变量本地的类型 变量中只保存指向实际数据所在位置的地址值
隐式转换:无需程序员干预,而自动完成的转换
强制转换:程序员主动调用专门函数完成的转换
//数据类型
var num = 11;
var str = "11";
var bool = true;
var und;
var nu = null;
console.log(typeof num); //Number
console.log(typeof str); //String
console.log(typeof bool); //Boolean
console.log(typeof und); //undefined
console.log(typeof nu); //object null 常被放在期望一个对象
//隐式转换
console.log(num+str); //"1111"
console.log(typeof(num+str)); //string
console.log(num+bool); //12
console.log(typeof(num+bool)); //Number
console.log(str+bool); //11true
console.log(typeof(str+bool)); //string
//强制转换
console.log(String(num)); //"11" 万能
console.log(num.toString()); //"11" 无法转换null和undefined
console.log(Number(str)); //11
console.log(Number(bool)); //1
console.log(parseInt(str)); //11 但无法转换boolean类型
console.log(Boolean(str)); //true 除了:"" 0 NaN undefined null -->false ;其余都为true
7.运算符和表达式
程序:人的想法在计算机中的执行步骤
算数运算符:+ - * / % ++ -- 返回值:只能是number,如果运算无效,返回NaN
%模运算(取余数):m%n : m/n,取除不尽的余数部分
关系运算:做比较,比大小 返回值:true、false
- 如果无法转为数字:转为NaN
- 如果两个都是字符串,则按位pk每个字符的unicode号
逻辑运算:多个条件(关系运算),综合得出最后的结论只可能返回true/false
&&: 读作且,程序中称为"逻辑与"
||: 读作或,程序中称为"逻辑或"
!: 读作不,程序中称为"非"
短路逻辑、位运算、赋值运算、三目运算
除数为0:js中除数可以为0,结果为: Infinity
Infinity,可参与关系运算
isFinite(num): 专门判断一个数字是否在有效范围内
eval: 专门执行字符串格式的js语句
还可计算字符串格式的表达式的值
var n = 1;
console.log(n++); //1 返回旧值
// console.log(++n); //2 返回新值
var a=3;
console.log(a++ + ++a + a++); //13
/*3 + 5 + 5 */
console.log(a);//6
var snum = 101;
console.log(snum%10); //1
//短路运算
var n = 100;
var m = 20;
var b = n+m>100 && n-m<50;
console.log(b); //false;
//位运算
n = n<<2;
console.log(n); //400
console.log(n.toString(2)); //转为2进制之后左移2位
//三目运算
var max = n>m ? n : m; //如果n > m 将n的值赋予 max 否则将m 赋予
console.log("max="+max);
//infinity 判断
var num1 = 1/0;
console.log(num1); //Infinity
var finite= isFinite(num1);
console.log(finite); //false
//eval 执行字符串语句
eval("var x=20,y=20;document.write(x+y)"); //40