2.1数据类型与变量
计算机程序就是去处理现实中各种数据
数据:
数据的几种属性:名称、值、类型
JS中的数据:
程序就是对现实中的数据进行加工,所以JS中也必须有相应的数据描述。
(1) 数值型:数值型数据支持多种表示形式
十进制:23,3.14;
八进制:023;(19)
十六进制:0x23(35)
科学计数法:3e2(3×102),3.5e-2(3.5×10-2)
<script>
alert(1399);
alert(345)
alert(023);//八进制
alert(0x23);//十六进制
alert(3.5e-2);//科学计数法
</script>
(2)字符串
Typeof() 数据的类型
为什么要有数据类型?
生活中是存在不同的数据类型的,计算机要解决生活问题,那么他就和生活中的数据类型产生了映射,所以有了数据类型。
变量:
变量就是一个内存单元。
Var variable的缩写变量的意思。声明一个变量。
var name = "曹鹏飞";
命名的规则:
1、 可以有字母、数字、下划线和$组成
2、 数字不能开头(?)
3、关键字不能用
命名的原则:见名思义。
规范:
(1)尽量使用英文单词或者组合,或者专业名词
weight color
filename(驼峰命名法)
(2)尽量不要使用拼音
变量的值:
变量的类型是由变量的值来决定的。
系统会为不同的类型分配不同的大小来存储数据。
如果是布尔类型就分配一个字节的大小来存储
如果是数字和字符串,那么根据他的大小和长度来分配字节数来存储。
JS是弱类型语言,所有的类型的变量都用var来声明。
JS是动态类型的语言,变量的类型会根据值的变化而变化,不会出错。
JS语言特点:
更加高级,不严谨。
变量不声明可以直接用。
使用严谨的格式,就必须先定义变量才能使用变量。
2.2对象类型
对象在JS当中对应的是object
定义一个狗的对象
<script>
var dog = {name:"藏藏",type:"藏獒",color:"花色",
sex:"雄",age:3,marry:false};
alert (typeof (dog.age));
</script>
狗:
名字:藏藏
品种:藏獒
颜色:花色
年龄:3
是否婚配:否
使用new Object()定义一个对象类型的变量
var dog = new Object();
dog.name="藏藏";
dog.age = 3;
dog.marry = false;
为什么有对象?
和为什么有数据类型是一样的。生活中处处有对象,所以js中有这种对象类型。
如何使用对象里面的属性?
使用对象名+,+对象属性名
2.3算术运算符与表达式
常见的算术运算符有 + - × ÷
对应在JS当中的运算符+ - * /
运算的的前提条件是:数值
才能进行运算,如果不是数值,加减乘除运算时就会出错。
加法运算:
var weight = 65;
weight = weight + 10;
alert(weight);
字符串拼接
var dogName = "zhangsan";
dogName = dogName + "feng";
取余运算符在JS当中用%表示 作用:得到两个数的余数
var num1 = 10;
var num2 = 3;
var result = num1 % num2;
alert(result);
使用技巧:可以解决周期性问题。
var date = 2;/*计算12天后是星期几*/
date =date + 12 % 7 ;
num++ 和 ++num 的区别
a = num++;
a = ++num;
Num++ 是先用再加;
var num1 = 1;
alert(num1 ++);
等价于
alert(num1);
num1 = num1 + 1;
++ num 是先加再用
var num1 = 1;
alert(++ num1);
等价于
var num1 = 1;
num1 = num1 + 1;
alert(num1);
2.4赋值运算符与表达式
赋值运算是表示将一个数据存储到某个内存单元中(变量)
var num = 10;
复合赋值运算符
num = num + 10;
num += 10;//两者完全等价
+= 可以不存在,完全由 普通运算符取代,存在的唯一价值就是简洁方便。
2.5关系运算符与表达式
生活中常见的关系运算符
大于 小于 等于 大于等于 小于等于 不等于
< = >= <= !=
判断两个数是否相等 使用两个=号。与生活常识不符合,如何避免判断两个数相等时出错。就是把常量放在等式的前面
把变量放在等式后面。
绝对相等
变量的值和类型都相等,使用 == 来表示
绝对不相等
变量的值和类型都不相等,使用 !== 来表示
<script>
var num = 2;
var str = "2";
alert(num !== str);
</script>
对比不相等
<script>
var num = 2;
var str = "2";
alert(num != str);
</script>
2.6逻辑运算符
与
两者同时成立结果才成立。
第一个关系是true第二个关系也是true那么结果才是true
如果有一个或多个为false时结果为false
在JS当中用两个&&表示
<script>
var num1 = 10;
var num2 = 20;
alert(num1 < 20 && num2 > 10);
</script>
或
至少有一个成立那么结果就为true
在JS中用||来表达
<script>
var num1 = 10;
var num2 = 20;
alert(num1 > 20 || num2 > 10);
</script>
非
结果为原身的对立面,就是当关系成立时,非之后就变为不成立。
非true之后结果为false
在JS中用!来表达
var num = 10;
alert(!(num > 10));
2.7位运算符与表达式
如何得到一个数的二进制。
<script>
var num = 5;
//011
alert(num.toString(2));
</script>
同理得到一个数其他进制数,改变。toString里面的值
与:
首先要把数转化为二进制。
运算法则,只有两者同时为1时结果才为1.其余结果均为0
按位运算
var num1 = 5;
var num2 = 6;
alert(num1.toString(2) & num2.toString(2));
或:
两个数有一个是为1
var num1 = 5;
var num2 = 6;
var num3 = 3;
alert(num1.toString(2) | num2.toString(2));
异或:
两个值相同时结果为0两个值不同时为1
var num1 = 5;
var num2 = 6;
var num3 = 3;
alert(num1.toString(2) ^ num2.toString(2));
2.8程序设计思维
生活中的程序:
(1)宿舍保修:填写保修单–>上报宿舍管理员–>联系物业–>找维修师傅–>上门维修–>反馈。
(2)银行开户:客户填写开户申请单–>提交证件资料–>审核资料真实性(1.本人、资料真实齐全则通过;2.其他人代办、有委托书、资料真实齐全则通过)–>录入系统开户–>设置密码–>发放卡、存折。
解决生活中问题的步骤(流程)描述。
计算机中的程序:
解决问题的步骤描述,但是是用计算机语言描述
编程:
根据业务需要,制定或编制解决问题的流程。编制程序的人应该非常熟悉或者精通业务
如果编制计算机程序的要求:
(1)精通业务
(2)精通计算机语言
学习方向:
(1)解决问题的思路
(2)计算机语言
重点是解决问题的思路,思路与计算机没什么关系。所有虽然我们学习的是JS,但是更多更重要的又并不是JS内容。
难点是思维的转变,也就是说从现在开始,需要站在计算机的角度去思考和描述问题。
案例一:计算一个三位数的各位数字之和,比如415的各位之和就是4+1+5=10。
<script>
/*解决问题的思路
* (1)提示用户输入一个三位数
* (2)接收输入存放于num中
* (3)计算百位b100,除以100取整
* (4)计算十位b10,对100求余,除以10取整
* (5)计算个位b1,对10求余
* (6)计算b100+b10+b1
* (7)输出结果*/
var num = prompt("提示输入一个三位数");
var b100 = Math.floor(num/100);//math.ceil()上
var b10 = Math.floor((num%100)/10);
var b1 = num%10;
var sum = b100 + b10 + b1;
alert(sum);
</script>
通过这个案例,我们学到如下知识:
(1)程序设计分为两个步骤:思路和编码。
(2)思路可以使用自然语言、流程图等一切可以描述清楚解决方案的形式来描述。
(3)将思路翻译成相应的代码。
案例二:根据三角形的三边长计算三角形的面积
<script>
/*
* (1)请输入三角形三边长,设三边长分别为numa、numb、numc
* (2)先求出半周长 p=(a+b+c)/2
* (3)再求三角形面积 S = √[p(p-a)(p-b)(p-c)]
* (4)输出结果
* */
var numa = Number(prompt("请输入第一条边长")); //Number();转化为数值类型
var numb = Number(prompt("请输入第二条边长")); //Number();转化为数值类型
var numc = Number(prompt("请输入第三条边长")); //Number();转化为数值类型
var p = (numa + numb + numc)/2; //计算半周长
var s = Math.sqrt(p * (p - numa) * (p - numb) * (p - numc)); //海伦公式
alert(s); //输出结果
</script>
案例三:话费计算器,根据通话时长(单位为秒)计算话费,资费标准为0.5元/分钟。
<script>
/*
* (1)提示用户输入通话时长,精确到秒
* (2)接收输入存放在min,将秒除以60再向上取整
* (3)资费标准为0.5元/分钟
* (4)计算费用
* (5)输出结果
* */
var second = Number(prompt("请输入通话时长"));
var minute = Math.ceil(second/60); //按分钟收费,不满1分钟的地方按一分钟收费
var money = minute * 0.5;
alert("此次通话产生话费"+money+"元");
</script>