JS基础知识点js基础:变量,数据类型(基本和引用),数据类型转换选择结构,循环结构

          JS基础知识点js基础:变量,数据类型(基本和引用),数据类型转换选择结构,循环结构        


基本数据类型(按值访问):Undefined 、 Null 、 Boolean 、 Number 和 String

引用数据类型(按引用访问):object、Array、function

typeof(检测基本数据类型时 typeof 是非常得力的助手)可以返回以下6种类型:undefined  、 boolean 、 number 、string、object(对象和null都是object类型)、function

instanceof(用于检测引用类型):所有引用类型的值都是 Object 的实例,person(引用类型值) instanceof Object永远都是true。

要知道是什么类型的对象,使用instanceof 操作符接上想要判断的类型,例如colors instanceof Array。

基本数据类型复制:复制的是该变量的副本,这两个变量可以参与任何操作而不会相互影响

引用数据类型复制:复制的是该变量的指针,该指针指向存储在堆中的一个对象。复制操作结束后,两个变量实际上将引用同一个对象。因此,改变其中一个变量,就会影响另一 个变量

传参:基本类型和引用类型全部是按值传递,相当于把参数复制一份给到function的局部变量

为了便于操作基本类型值,ECMAScript 还提供了 3 个特殊的引用类型: Boolean 、 Number 和

String 。

Number 类型重写了 valueOf() 、 toLocaleString() 和 toString()方法。除了继承的方法之外, Number 类型还提供了一些用于将数值格式化为字符串的方法。 toFixed() 方法会按照指定的小数位返回数值的字符串表示。

String 对象的方法也可以在所有基本的字符串值中访问到。其中,继承的 valueOf() 、 toLocale-String() 和 toString() 方法,都返回对象所表示的基本字符串值。String 类型的每个实例都有一个 length 属性。

字符方法:两个用于访问字符串中特定字符的方法是: charAt() 和 charCodeAt() 。

var stringValue = "hello world";

alert(stringValue.charAt(1)); //"e"

alert(stringValue.charCodeAt(1)); // 输出"101",小写字母 "e" 的字符编码

字符串操作方法

1、concat:拼接字符串,可接收任意多字符串,不改变原字符串值,虽然 concat() 是专门用来拼接字符串的方法,但实践中使用更多的还是加号操作符(+)。

var stringValue = "hello ";

var result = stringValue.concat("world", "!");

alert(result); //"hello world!"

alert(stringValue); //"hello"

2、三个基于子字符串创建新字符串的方法: slice() 、 substr() 和 substring() 。都接收1或2个参数。

slice() 、substring()在接收正数参数时,第一个参数是字符串截取的起始位置,第二个是字符串结束位置。

substr()在接收正数参数时,第一个参数同上,第二个参数是截取长度。

当第一个参数为负数的时候,slice()和substr()按照参数+字符串长度结果来截取;substring()将负参数转换为0;

当第二个参数为负数的时候,slice()按照参数+字符串长度结果来截取;substr()和substring()将负参数转换为0;

3、字符串位置方法:有两个可以从字符串中查找子字符串的方法: indexOf() 和 lastIndexOf()

4、trim():删除字符串前后空格,不改变原字符串值

5、字符串大小写转换方法

字符串大小写转换的方法有 4 个: toLowerCase() 、 toLocaleLowerCase() 、 toUpperCase() 和toLocaleUpperCase() 。

6、字符串的模式匹配方法

match() 方法只接受一个参数,要么是一个正则表达式,要么是一个 RegExp 对象。返回数组。

search()参数同上。返回要查找的在字符串中第一次出现的位置。

字符串替换:var result = text.replace("at", "ond");

7、localeCompare() 方法

var stringValue = "yellow";

alert(stringValue.localeCompare("brick")); //1

在前面返回1,同样位置返回0,在后面返回-1





变量的声明和变量的初始化

1. 变量的声明:var 变量名;

变量的赋值:变量名=值;

2. 变量的初始化:var 变量名=值;

数据类型

1.简单类型和复杂类型:

简单类型: Number,String,Boolean,Undefined,Null

复杂类型:Object

2.数字类型:Number

字符串类型:String,在js中存储字符串的数据的值,可以使用单引号,也可以使用双引号,目前推荐大家用双引号(代码中的括号小括号,大括号,中括号,逗号,分号都是英文的)

布尔类型:Boolean,其他的语言中bool,布尔类型中的数据只有true(1)或者是false(0)

未定义:undefined--就是自己,当一个变量声明了没有初始化(没有赋值),就是undefined

如果变量的值是Undefined和数字计算,结果是NaN---不是一个数字

:null,当一个变量使用后,不想再使用了,可以赋值为null---->释放内存内存空间

Object:对象

typeof关键字--->识别该变量的类型

1.typeof 变量名

2.typeof(变量名)

数字类型的范围

1.//获取数字类型的最大值

console.log(Number.MAX_VALUE);

2.//获取数字类型的最小值

console.log(Number.MIN_VALUE);

3.//isNaN--->不是一个数字,结果才是true,否则就是false

var num="我好开森哦";

console.log(isNaN(num));

字符串的长度和拼接

1.获取字符串的长度:变量名.length---->该字符串的长度

console.log(name.length);

2.字符串的拼接:使用+来进行拼接

console.log(name1+name2+name3);

数字类型转换

1.其他类型转数字类型---字符串转数字, 布尔转数字

1.parseInt(变量);---转成整数的方式

2.parseFloat(变量)----转小数的方式

3.Number(变量)---数字类型----如果转换失败了,则显示的是NaN

4.isNaN(值)--->如果不是一个数字则返回true,如果是一个数字则返回false

2.其他类型转字符串类型

1.变量.toString()---转字符串了

2.String(变量)----转字符串了

3.其他类型转布尔类型

Boolean(变量)---转布尔类型

操作符

算数运算符:+ - * / %(取余)---->一个数字和另一个数字相除之后的余数

算数运算表达式:是一个表达式,由算数运算符连接起来的表达式

关系运算符:> <>= <=>

逻辑运算符: &&--->逻辑与 || --->逻辑或 ! --->逻辑非

赋值运算符:=

赋值运算符中还有复合赋值运算符: += -= *= /= %=

一元运算符:(++变量 变量++)

如果++是在后面,参与运算的时候,先参与运算,然后运算完毕后再自身加1

如果++是在前面,先自身加1,参与运算

流程控制

1.顺序结构

2. 分支语句(5个):if , if-else , if-else if-else if -else if...else , swtich-case , 三元表达式

3.循环语句(5):while , do-while , for , break , continue

break关键字,continue关键字

1.break关键字---->关于循环的

在循环中如果遇到了break关键字,则立刻跳出当前所在的循环

2.continue关键字---->在循环中使用

在循环中遇到了continue--->立刻回到循环的条件的位置,继续下一次循环

数组

1.数组的作用:一次性可以存储多个数据,数组中存储的数据类型可以不一样

2.数组的遍历:就是一个一个的获取数组中的数据

3.数组的定义:

1.通过构造函数的方式创建数组

var 数组名=new Array();

2.通过构造函数的方式创建数组

var 数组名=new Array(长度);

3.字面量的方式定义数组

var 数组名=[];

函数

1.函数:把一些重复的代码封装起来,在需要的时候直接调用

2.函数的作用:代码的重用(代码的重复使用)

3.函数的定义:

函数定义的语法:

function 函数名(){

函数体

}

函数的调用:

函数名();

4. 函数名字符合驼峰命名法

5.函数的参数

函数的参数:函数在定义的时候,函数名后面的小括号中的变量,就叫参数

函数在调用的时候传入的变量或者是值,也叫参数;

函数定义的时候函数名后面的小括号里面的变量叫形参

函数调用的时候函数名后面的小括号里面的变量或者是值叫实参

6.函数的返回值

如果一个函数没有返回值(函数中没有return),也没有参数,这个函数可以叫:无参数无返回值的函数;

返回值的细节问题:

当需要返回多个数据的时候,可以先将这些数据都传入到数组中,最后返回一个数组即可。

在函数中,return下面的代码,不执行;

函数没有返回值,接收了返回来的结果,结果是undefined;

当一个变量声明了,没有赋值,结果是undefined;

当一个函数内部,有return,但是后面什么也没有,那么此时,这个函数也是没有返回值的,该函数没有明确的返回值;

当一个函数没有明确的返回值的时候,如果接收,结果就是undefined;

arguments伪数组

arguments是可以在函数内获取用户在调用函数的时候传入了几个参数,同时还可以获取每个传入参数的值

作用域

作用域:变量的使用范围

局部变量:在函数中定义的变量就是局部变量

全局变量:除了函数以外任意的地方定义的变量,都是全局变量

局部变量的使用范围:只能在函数中使用

全局变量的使用范围:在页面的任何位置都可以

代码块:在一对大括号中写的代码,变量在代码块声明,只能在代码块中使用,(暂且的) 在js中是没有块级作用域的

隐式的全局变量:声明变量,没有使用var

数据类型转换选择结构,循环结构        

1、数据类型转换

数据类型:number,string,boolean,null,undefined

var a = 123;

var b = "123";

var c = 1.23;

var result = b +56; 拼接

1.1、什么是数据类型转换

允许数据在各个类型之间灵活的转变

1.2、隐式转换

不需要认为参与,由程序自动完成

+

var a = true;

var b = 56;

var result = a + b; //57

1.3通过 typeof(参数) 函数帮助查看指定数据的类型

NaN : Not a Number 

isNaN() : 是不是一个数字

isNaN("abc") : true

isNaN(123) : false

2、强制数据类型转换

转换函数

1、toString()   其它类型转字符串  但是遇到null  undefind类型     报错 无法转换

String();    其它类型转字符串  都能转

面试题    String   vs   toString()

var a = 123;

a.toString();

var b = ""+a; //string

var c = a+""; //string

2、其他类型转number

1、parseInt(参数)   取整

碰到第一个非数字的字符,停止转换

如果第一个字符就是非数字的,结果为NaN

parseInt("123"); --> 123

parseInt("123ABC"); --> 123

parseInt("123.456"); -->123

parseInt("ABC123"); --> NaN

2、parseFloat(参数)  取小数

将字符串转换为小数"15.36854"--->15.36854

3、弹出一个输入框

var num = prompt("请输入xxxx",0);

var num = prompt("请输入xxxx",0);

2、函数

函数(function),也叫方法(method),或过程(procedure)

2.1、什么是函数

是一段被【预定义】好,并且可以被反复使用的代码块。

代码块:允许包含多条语句。

是一个独立的功能体。

console.log();

alert(); --> alert("弹出内容");

document.write();

parseInt(xxx);

parseFloat()

prompt()

2.2、定义函数

定义函数的过程:封装

1、语法

关键字:function

function 函数名(){

//多条语句

}

定义一个函数,功能为, 在控制台上打印输出 Hello World

3、调用函数

直接使用 函数名() 进行调用

1、任何一个位置处

2、通过HTML元素事件来调用

4、参数

语法:function 函数名(参数列表){

参数列表:用,隔开的多个变量名(参数名)

}

function zhaZhiJi(fruit){

console.log("传递过来的水果是:" + fruit);

}

1、分支结构

1、运算符 - 比较运算符

> , < , >= , <= , == , !=

>= : 3 >= 5 False

5 >= 5 True

== : 判断等于,判断两个操作数,是否相等,相等则为true,不等则为false

3 == 5 : False

3 == 3 : True

!= : 3 != 5 : True

"a" != "a" :False

以上运算符的返回值 全部为 boolean 类型

3、程序的流程控制

程序=数据结构 + 算法;

数据结构:程序运行中所需要的数据元素

算法:将要做的事情通过一系列的逻辑串起来

任何程序或算法都有结构:

1、顺序结构

代码从头到尾除注释以外,按照出现的顺序去执行

2、选择(分支)结构

根据条件判断哪一块的程序要被执行,哪一块的程序不被执行

3、循环结构

根据条件判断,反复的执行某一段程序

4、if语句

满足某个条件时,执行某些操作,不满足则不执行

语法:

if(条件){

//某些操作

}

当条件结果为 true 时,则执行if语句块中的语句

当条件结果为 false时,则不执行if语句块中的语句

一个条件一件事

if(){}

1、由比较运算符 组成的表达式 称为:条件表达式、逻辑表达式

2、if 条件中,如果不是boolean类型表达式,那么进行隐式转换

以下值中,都会默认转换为 false 

if(0){}

if(0.0){}

if(null){}

if(undefined){}

if(NaN){}

if(""){}

var a = prompt("请输入一段话:");   小括号里面都是false

if(a){

//语句块;

}

3、if 语句块 {} 的问题

当if语句块中【只有一条语句】时,{}可以省略

if(a){

console.log("Success !");

}

等价于

if(a)

console.log("Success!");

5、if - else结构

语法:

if(条件){

语句块1

}else{

语句块2

}

判断条件

如果条件的值为 true ,则执行语句块1

如果条件的值为 false,则执行语句块2

1、多重if结构

在一套完整结构中,允许判断多个条件,最终,最多只能选择一个条件去运行

语法:

if(条件1){

语句块1;

}else if(条件2){

语句块2;

}else if(条件3){

语句块3;

}else{

//以上条件都不满足的时候,最终执行的语句块(此块可选);

}

循环结构的执行步骤】

1、声明循环变量;

2、判断循环条件

3、执行循环体操作

4、更新循环变量

然后循环执行2-4,直到条件不成立时,跳出循环。

while循环()中的表达式,运算结果可以是各种类型,但是最终都会转为真假,转换规则同if结构:

var num = 1 ; //1、声明循环变量;

while (num){ //2、判断循环条件

document.write(num+"<br />");//3、执行循环体操作

num++;//4、更新循环变量

}

while循环特点:先判断在执行;

do-while循环特点:先执行,在判断;即使初始条件不成立;do-while循环也至少执行一次



【for循环】  1、for循环有三个表达式:① 声明循环变量 ②判断循环条件 ③ 更新循环变量;         三个表达式 用;分隔。         for循环三个表达式都可以省略,但是两个缺一不可  2、for循环的执行特点、先判断、再执行,与while相同。  3、for循环三个表达式都可以有多部分组成,第二部分多个判断条件&& ||链接,第一三部分用逗号分隔。


↓打印结果

【循环控制语句】

1、break:跳出本层循环,继续执行循环后面的语句。

如果循环有多层嵌套,则break只能跳出一层;

2、continue:跳过本次循环剩余的代码,继续执行下一次循环,

① 对于for循环,contiune之后执行的语句,是循环变量更新语句i++;

② 对于while、do-while循环,contiune之后执行的语句,是循环条件判断;

因为,使用这两个循环时,必须将contiune必须放到i++之后使用,否则contiune将跳过i++

导致死循环;

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

推荐阅读更多精彩内容