JavaScript变量 、 数据类型 、 数据类型转换 、 运算符和表达式

1、声明变量
作用:到内存中申请一段空间,并且指定一个别名。
var 变量名;

使用 "=" 为变量赋值
变量名=值;

简写:
var 变量名=值;
注意:
1、声明变量的时候,尽量不要省略 var 关键字
如果 省略了 var ,有可能会造成"全局污染"的结果
2、声明变量如果未赋值,则有一个默认值,为 undefined

问题:声明一些变量,分别保存一个人的 姓名(stuName),性别(stuGender),年龄(stuAge),HTML考试成绩(htmlScore)

一次性声明多个变量:
var 变量名1,变量名2,....,变量名n;
var 变量名1=值,变量名2,....,变量名n;
2、变量名命名规范
1、不允许使用JS的关键字和保留关键字
关键字:var,if,else,while,for...
保留关键字:class,int,float...
2、规范
1、可以包含字母、数字、下划线以及$
2、不能以数字开头
var name1; 可以
var 1name; 错
3、尽量见名知意
var stuName;
var userName;

var yonghuxingming;
4、可以采用"匈牙利命名法","驼峰命名法","下划线命名法"
匈牙利命名法:涉及获取页面表单控件时使用 txt...
驼峰命名:
单一单词 采用全小写
var age;
合成词:第一个单词全小写,其余每个单词首字符 大写
var userAge;
下划线命名法:
var _salary;
3、变量的使用
1、只声明,未赋值
值为 undefined
2、变量如果未经声明直接使用
console.log(test);
语法错误!!!
3、对变量进行存/取操作
存:赋值操作
取:取值操作
1、存 - SET操作
变量 出现在 赋值符号(=)的左边
var userAge;
userAge=18;
2、取 - GET操作
只要 不出现在 赋值符号(=)的左边,都是取值;
var userAge = 18; //声明并赋值
console.log(userAge);
var newAge = userAge;
//userAge 是取值
//newAge 是 存值操作

注意:赋值符号的左边,只能是变量
var userAge = 18;

18=18; //不成立
18=25; //不成立
4、练习
1、创建3.html,在<script>元素中声明三个变量,用来保存快餐店推出的一款套餐内容
1.1 用一个变量保存一种汉堡的名称
1.2 用一个变量保存配餐的名称
1.3 用一个变量保存饮料的名称
2、追加程序,输出套餐名称及其内容

3、尝试为一个未声明过的变量赋值,再输出
4、输出一个未声明过的变量,观察结果
4、运算符
1、赋值运算符
=
var userName="张三";
2、算术运算符
+,-,*,/,%
% : 取余,俗称 模
5%2 ... 1
2%5 ... 2
使用场合:
1、判断奇偶性
52 % 2 ... 0
2、判断某数字是否为 几 的倍数
3、获取某数字得的最后几位
var num = 1234;
var last1=num % 10;
var last2=num % 100;
+ : 作用
1、数字的 加法 运算
2、字符串的连接作用
如果 + 两边的操作数有一个是 字符串(""),那么操作结果就死 连接 而不是加法操作

套餐名称:香辣鸡腿煲套餐
汉堡:香辣鸡腿堡
配餐:炸薯条
饮料:可乐
优先级 :先 */% 再 加减
var result = 25+18*2+6/3+5%2;
可以通过 () 提升优先级
算术表达式:由算术运算符,连同操作数所组成的表达式。
5、常量
console.log("Hello World");
1、什么是常量
一旦声明好,就不允许在程序运行过程中修改的数据,就是常量
2、声明常量
const 常量名=值;
注意:
声明时,必须赋初始值
常量名称,采用全大写形式
3、练习
创建4.html,声明一个变量(r),保存一个圆的半径,计算该圆的周长(l),以及该圆的面积(s)
l = 2*PI*r;
s = PI*r*r;
6、数据类型
1、什么是数据类型
保存的数据的类型

作用:不同类型的数据所开辟的空间大小不一样。
2、数据类型分类
1、原始类型 (基本类型)
1、number 类型
数字类型

可以表示32位的整数,也可以表示64位的浮点数
8位=1字节(byte)

整数:占4个字节
小数:占8个字节

十进制:123456
八进制:010
十六进制:0x10
2、string 类型
字符串 类型

使用:需要用 ""或'' 将值括起来

He"ll"o
W'or'ld

特殊字符需要进行转义,
转义字符:
\n:换行
\t:一个制表符
\r:回车
\":"
\':'
\\:\

//单行注释
/*多行注释*/
3、boolean 类型
布尔类型
只记录 "真" 或 "假"
值:
true :表示真
false:表示假
在+-*/%运算中
true :当1做运算
false:当0做运算
4、undefined
语义:不存在该数据
产生原因:
1、声明了变量未赋值
2、访问的对象的属性不存在
2、引用类型


4. 数据类型转换:
隐式转换: 程序根据自己的需要,自动转化数据的类型
强制转换: 由程序员主动调用函数执行的转换
何时:当隐式转换的结果,不是想要的
如何:
1. x to string:2种:
1. x.toString(): 不能转null和undefined
原因: null和undefined表示什么都没有,无法加.调用函数。
2. String(x): 万能!——首选
模拟实现String(x)
function String(x){
if(x===undefined){
return "undefined";
}else if(x==null){
return "null";
}else{
return x.toString();
}
}

2.x to number:
1. 非字符串内容转number:
var num=Number(x)
其实: Number也可转纯数字组成的字符串。
bool-> true-1 false-0
如果转不了,返回NaN:
NaN: not a number
NaN是number类型
NaN代表所有无效数字的值
2. 字符串转number:
parseInt(str)——取整,去小数
原理:从str开头开始读取每个字符
跳过开头的空字符
碰到第一个非数字字符结束
如果传入的参数不是字符串,则首先转为字符串,再读取内容。
Number(true) vs parseInt(true)
1 parseInt("true")
NaN
问题:不认识小数点——去掉小数部分
何时使用: 只有在非常确定的要去掉小数部分时。
parseFloat(str) —— 首选
原理: 同parseInt
认识第一个小数点
自动判断转换后的类型,优先存为整数

如果无法转为数字,返回NaN

3. x to bool: Boolean(x)
转换规则: 只有五个值会转为false:
"" 0 NaN null undefined
除此之外,都转为true

5. ***运算符和表达式:
***程序:人的想法在计算机中的执行
运算符:程序中,模拟人的想法的符号
表达式:数据,变量,运算符组成的公式

算术运算: + - * / %
何时使用%: 1. 判断能否整除
2. 限制计算的结果不能超过最大值
隐式转换:
默认: 一切转为数字,再算术计算
如果无法转为数字,则转为NaN:
NaN参与任何算数计算,结果还是NaN
特殊: +运算中,碰到字符串,一切都转为字符串,+法计算变为字符串拼接

关系运算: 做比较,做判断
> < >= <= == !=
返回值: true/false
隐式转换:
默认: 一切都转为数字,再比较
特殊:
1.如果转不了,会转为NaN比较:
NaN不大于,不小于,不等于任何值
无法用普通的==判断是否是NaN
解决: isNaN(num)
判断num是不是NaN,结果true/false
如果true,num是NaN
false,num不是NaN,是数字
反正用: !isNaN(num)
判断num是不是数字
true->是数字
fales->不是数字
2.undefined vs null
问题: undefined==null -> true
==中undefined隐式转为null
解决: 全等===
不带隐式转换的==
要求: 数据类型必须相同,其次再值相等。
何时使用: 不希望比较时,自动隐士转换时——要求类型也必须相同时
尤其: 在和undefined,null比较时
3.如果参与比较的都是字符串:
按位PK每个字符的unicode号
如果前一位相同,就比下一位
如果前几位都相同,比长度
4.如果两个引用类型的对象做==比较
比较的是对象的地址
比如: []==[] -> false
[]表示创建一个新数组的意思
有两个[],就创建了两个新数组
两个新数组的地址不可能一样

逻辑运算:
将多个关系运算,综合得出最终结论
&&(而且) ||(或) !()
如何使用:
条件1&&条件2...:只有两个条件同时为true
结论才为true
只要一个条件为false
结论为false
条件1||条件2...:只要一个条件为true
结论就为true
除非所有条件都为false
结论才是false
!条件: 颠倒条件的判断结果

隐式转换: 将每个条件临时转为boolean

***短路逻辑: 如果前一个条件已经可以得出最终的结论,则后续条件不再执行(即使写错)
***利用短路逻辑:
1. 利用&&短路逻辑: 实现简单分支:
一个条件,一件事,满足就做,不满足就不做。——只能简化if结构
条件&&(操作)
如果条件是true,才执行操作
如果条件是false,不执行任何操作
2. 利用||短路逻辑: 实现两个值自动选择有效的值使用。
值1||值2:
如果值1有效(只要不是5个值之一)
就返回值1
如果值1无效(值1是5个值之一)
就返回值2

课堂练习: 运算符优先级:

位运算:
1. 左移和右移:
m<<n 等于 m* 2的n次方
m*Math.pow(2,n)
m>>n 等于 m/ 2的n次方
2. 取整:
parseInt(m)
m^0
m|0
m>>>0

扩展赋值运算: 对赋值运算的简写:
m+=n => m=m+n 累加
m-=n => m=m-n
m*=n => m=m*n
m/=n => m=m/n
m%=n => m=m%n

如果n是1: 递增1 递减1
m+=1 => m++
m-=1 => m--
递增/递减单独使用,前++和后++完全等效
如果递增/递减运算参与到其他表达式中:
前++和后++的结果不同,会影响表达式:
***相同: 变量中的值一定都+1
***不同: 后++,返回旧值
前++,返回新值

转载于:https://www.cnblogs.com/JinQuanLi/p/6551477.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值