js基础之数据类型,运算,流程控制

编写位置

写在标签的指定属性中

<button onclick="alert('你点我干嘛~~~~');">点我一下</button>
<a href="javascript:alert('讨厌!!!');">你也点我一下</a>

写在script标签中

<script type="text/javascript">
        alert("我是内部的JS代码");
</script>

在js文件中编写引入

<script type="text/javascript" src="js/script.js"></script>

基本语法

1.在JS中严格区分大小写
2.JS中的每个语句以;结尾
   - 如果不写分号,浏览器会根据上下文自动添加分号
但是浏览器加分号会影响一些性能,而且有些情况它会给你加错了
   - 所以我们必须在每个语句的结尾加上分号
3.JS中会忽略多个空格和换行,所以我们可以利用空格和换行对代码进行格式  

标识符

标识符的规范  
1.标识符中可以含有字母、数字 、 _、$,但是不能以数字开头
2.标识符不能是ES标准中的关键字和保留字
3.标识符命名时需要使用驼峰命名法
- 首字母小写,每个单词开头的字母大写
helloworld
xxxYyyZzz
backgroundColor
borderTopWidth
4.在JS底层保存标识符时,实际上都是使用的Unicode编码进行保存的理论上讲只要在Unicode编码中的字符都可以作为标识符

数据类型

String

js中字符串可以使用双引号或单引号

  • 转义字符

打印一些特殊字符时,可以使用\来作为转义字符

\" 表示"
\' 表示'
\\ 表示\
\t 表示制表符
\n 表示换行
\uxxxx 表示一个Unicode编码

Number

  • 如果我们使用的数字超过了最大值,则会返回Infinity,表示无穷±Infinity 正负无穷,它的类型也是Number
NaN (Not A Number)
  • 用来表示一个非法的数字
  • 使用typeof检查一个NaN时,也会返回number

Boolean

Null

  • Null类型只有一个值,就是null
  • null值专门用来表示为空的对象
  • 使用typeof检查一个Null类型的值时,会返回object

Undifined

  • Undefined表示一个声明但是没有赋值的变量
  • Undefined的类型只有一个值 undefined
  • 使用typeof检查一个Undefined类型的数据时,会返回undefined

Object

检测数据类型

typeof 变量
typeof 100

数据类型转换

转换为String类型

方式一:
- 调用被转换数据类型的toString()方法
- toString()方法不会改变原变量的值,而是将值转换为字符串并返回
- 由于null和undefined中没有toString()方法,所以不能调用toString()将他们转换为字符串

- 对于数字来说,toString()方法,除了可以将一个数字转换为字符串以外,它还可以将一个数字
  转换为指定进制的字符串在数值的toString()方法中,可以传递一个进制的整数作为参数,这样
  数值将会被转换为指定进制的数字的字符串
    a = a.toString(16);
方式二 
- 调用String()函数
  String(100);
- 将被转换的数据做为参数传递给String()
- 原理:
- 对于具有toString()方法的类型来说,String()会调用它们的toString()方法来将其转换为字符串
- 对于null和undefined来说,
  会将null 直接转换为 "null"
  将undefined 直接转换为 "undefined"

转换为Number类型

方法一
    Number()
    Number("100aaa");
    如果字符串是一个合法的数字,则将其转换为对应的数字   
    如果字符串不是一个合法的数字,则转换为NaN                          
    如果字符串是一个空串或纯空格的字符串,则转换为0
    +"100"  
    - true转换为1                  
    - false转换为0
    - null转换为0
    - undefined转换为NaN
方法二
    parseInt()
    - 将一个字符串转换为整数
    使用该函数解析字符串时,它会从字符串的左侧开始解析,直到解析到最后一个有效的整数位
    - 在使用parseInt时,可以传递以进制作为参数,来说明数字的进制
    c = parseInt(c,10);

    parsFloat()
    parseFloat()和parseInt()类似
    不同的是它可以解析到有效的小数位

转换为Boolean类型

Boolean()
null,undefined,空串,0,NaN是false,其他都是true

运算符

+

  • 当对非数字(除了字符串)进行加法运算时,它会将其先转换为数字,然后再运算
  • 任何值和字符串进行加法运算时,都会先将其转换为字符串,然后在和字符串进行拼串的操作
  • 任何值和NaN做任何运算都是NaN(NaN和字符串相加会把NaN转换为字符串)
  • 字符串拼接
  • 数值运算

-

  • 对非数字类型进行运算时,会先将其转换为数字然后在运算
  • 我们还可以通过为一个任意的数据类型 -0 *1 /1 来将其转换为Number类型原理和Number()函数一样。

* / %

  • 同 - 一样

一元运算符

一元的+
一元+就相当于数学运算中的 正号
一元+不会对一个数值产生任何变化
一元的-
一元-相当于数学运算中的 负号
- 负号可以对一个数值进行符号位取反

如果对非数值进行一元的+或-运算,它会向将其转换为number,然后在运算我们可以利用这一特点来将任意的数据类型 转换为Number

自增/自减

++a/a++
a++的值是变量自增前的值(变量原值)
++a的值是变量自增后的值(变量新值)
--a/a--
a-- 的值变量自减前的值(变量的原值)
--a 的值是变量自减后的值(变量的新值)

逻辑运算符

布尔值的逻辑运算
||
如果第一个值为true,则返回第一个,如果第一个值为false,则返回第二个
对于非布尔值,做与或运算时,它会先将其转换为布尔值,然后在运算最终返回变量的原值
&&
如果第一个值为true,则返回第二个,如果第一个值为false,则返回第一个。

赋值运算符

+= -= *= /= %=

比较运算符

>= <= > <
对非数值类型进行关系运算,则会将他们转换为Number然后在比较

当关系运算符的两侧都是字符串时,它不会将字符串转换为Number,而是会逐位比较字符串的Unicode编码
通过这种方式,可以将文本按照字母顺序进排序(只限英文)

相等运算符

==
对两个类型不同的变量进行相等比较,会先将其转换为相同的类型,然后再比较
(至于具体转换为什么类型,不定,但是大部分情况是转换Number)
===
全等和相等的区别就是相等会做自动的类型转换,而全等不会,
使用全等时,如果两个值的类型不同,直接返回false
!=
!==
isNan()
判断一个值是否是NaN 

三元运算符

条件表达式?语句1:语句2;
var result = 1==2?"对了":"错了";

运算符优先级

流程控制语句

if

if(条件表达式) {
    语句...
}

if..else if...else

switch switch 判断是全等(相当于===)

switch(条件表达式){
case 表达式:
语句...
break;
....
default:
语句...
break;
}
  • 如果全等则会执行当前case后的所有语句,可以在case的最后添加一个break关键字,来避免其他的case执行
  • 如果不全等,则继续向下比较,直到找到全等的case为止,
  • 如果所有的case都不符合要求,则执行default后的语句

while(语句

while(条件表达式){
* 语句...
* }

do...while语句

do{
语句...
}while(条件表达式)

for循环

for(①初始化表达式;②条件表达式;④更新表达式){
③语句...
}

死循环

for(;;){
alert("hello");
}

嵌套for循环


break / continue

break 结束当前循环

可以为循环指定一个label来标识循环,使用break时,可以通过这个label来指定要结束的循环

hello:
for(var i=0 ; i<5 ; i++){
console.log("外层循环:"+i);     
    for(var j=0 ; j<5 ; j++){
        console.log("----->内层循环:"+j)        
        if(j == 2){
        break hello;
        }
    }
}

continue可以用来跳过本次循环

return

可以通过return来设置函数的返回值

语法:return 值;return后的代码不会执行(结束当前方法)
函数的返回值可以是任意的数据类型
如果return后不写值或者不写return,则相当于 return undefined;   
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容