【JavaScript】与众不同数据篇

举报
执久呀 发表于 2022/01/14 14:52:01 2022/01/14
【摘要】 ​ 目录一、前言二、变量的种类三、js中的数据类型四、typeof运算符五、原始类型:1.Undefined2. Number什么时候结果是一个NaN呢?常见的函数:isNaN:parseInt:parseFloat:Math.ceil():4.Boolean五、 Null六、String 常用函数考点:经常问 substr和substring的区别?七、Object创建类的方式方式①方式②...

 目录

一、前言

二、变量的种类

三、js中的数据类型

四、typeof运算符

五、原始类型:

1.Undefined

2. Number

什么时候结果是一个NaN呢?

常见的函数:

isNaN:

parseInt:

parseFloat:

Math.ceil():

4.Boolean

五、 Null

六、String

 常用函数

考点:经常问 substr和substring的区别?

七、Object

创建类的方式

方式①

方式②



一、前言

进入正题,该说不说

二、变量的种类


①全局变量:

在画数体之外声明的变量属于全局变量,全局变量的生命周期是:
浏览器打开时声明,浏览器关闭时销毁,尽量少用,因为全局变量会一直在浏览器的内存当中,耗费内存空间。所以尽量使用局部变量


②局部变量:

在函数体当中声明的变量。包括一个函数的形参都属于局部变量
局部变量的生命周期是:函数开始执行时局部变量的内存空间开辟,函数执行结束之后,局部变量的内存空间释放。

这和java中的基本一致。

<!doctype html>
<html>
   <meta  charset="utf-8">
   <head>
      <title></title>
   </head>
   <body>
      <script  type="text/javascript">
        var play=100;
        function player(){
          var play="张三";
           alert(play);
        }
        player();//调用
        alert(play);
      </script>

   </body>
 
</html>>

如果一个变量没有var修饰那他就是全局变量,和他所在的位置无关。

如:

 <script  type="text/javascript">
        function player(){
            play="张三";//变量要赋值
        }
        player();//调用
        alert(play);
      </script>

 若是加上var修饰则,则定义在函数体内的变量则无法访问,因为他已经销毁了。

两个相同的变量和作用范围(都是全局或都是局部变量),后出现的会覆盖先出现的变量,因为执行顺序是自上而下的。

三、js中的数据类型

虽然js在声明的时候不需要指定类型,但是每个值还是有类型的。

分为:原始类型和引用类型

原始类型:Undefined、Number、String、boolean、Null

引用类型:Object和object的子类

ES规范(ECMAScript规范):在ES6之后又在数据类型上面增加了叫Symbol的数据类型

四、typeof运算符

js中有一种运算符为typeof,这个运算符可以在程序执行过程中动态的获取变量的数据类型


typeof运算符的语法格式:

typeof  变量名


typeof运算符的运算结果是以下6个字符串之一:(注意字符串都是全部小写)

  • "undefined"
  • "number"
  • "string"
  • "boolearl"
  • "object"
  • "function"

在js中比较字符串是否相等用"=="来完成,js中没有equals。

例:,要求a变量和b变量将来的数据类型必须是数字,不能是其他类型。

以下定义的这个sum函效是为了完成两个数字的求和。 

<script type="text/javascript">
function sum(a,b){
   if(typeof a=="number"&& typeof b=="number"){
      return a+b;
    }
   alert("a或b中有一个或两个不是数字");
}
 var rel=sum(false,"ab");
  alert(rel);//undefined,因为不符合要求所以没收到返回值,故默认是undefined
  var  ral=sum(1,3);
  alert(ral);//4
</script>

 typeof数据类型小测试:

 var i;
alert(typeof i);//undefined

var n=100;
alert(typeof n);//number

var s="abcd";
alert(typeof s);//string

var c=null;
alert(typeof i);//object,null属于Null类型,单typeof运算结果是object

var k=false;
alert(typeof i);//boolean

function su(){
}
alert(typeof su);//function

五、原始类型:

1.Undefined

Undefined类型只有一个值,这个值就是undefined的,当一个变量没有赋初值,系统就会给这个变量赋为undefined,undefined是一个具体的值。

例:

<script type="text/javascript">
  var a;
  var b=undefined;
  var c="undefined";//带""是字符串了
  alert((a==b)+","+(a==c));

</script>

运行结果:

2. Number

number包括整数、小数、负数、正数、不是数字、无穷大(10,3.14,-5,10,NaN,Infinity)都属于Number类型。

关于NaN表示Not a  Number,不是一个数字,但是属于Number类型

什么时候结果是一个NaN呢?

运算结果本来应给是一个数字,但最后算完不是一个数字,结果就是NaN

如:

var i=100;
var h="块";
alert(i/h);//数字参与除法本来应该是一个数字,但是现在不会得到一个数字,所以结果是NaN

但是有字符串相加时,会进行字符串拼接,不会参与加号运算,故结果也就不会是NaN

Infinity表示无穷大(当除数为0时,结果为无穷大)

var i=100;
var h=0;
alert(i/h);//(当除数为0时,结果为无穷大)Infinity


alert(10/3);

结果为3.3333333...

在js中两个数相除,会算尽

常见的函数:

isNaN

判断不是一个数字,如果是数字返回false,否则true。

alert(isNaN(100));//false是一个数字
alert(isNaN("100"));//true不是一个数字

parseInt

将字符串转化为数字,并且取整数位。

alert(parseInt("3.667"));//3
alert(parseInt(5));//5不变

parseFloat

将字符串转化为数字

alert(parseFloat("3.14"));//3.14
alert(parseFloat(5.44));//5.44

Math.ceil():

将一个小数向上取整(如:2.1->3,Math是一个数学类,ceil表示天花板)(向大的整数靠近)

alert(Math.ceil(2.1));//3
alert(Math.ceil(-2.1));//-2


4.Boolean

在js中布尔类型只有两个值,false和true.

Boolean类型终有一个函数:boolean();

语法格式为:boolean(数据)

在其他需要布尔类型是,直接写数据,js会自动调用boolean()函数。有数据会转化成true,没数据转化成false。

如:
 

alert(Boolean(1));//true

alert(Boolean(0));// false

alert(Boolean(""));// false

alert(Boolean("abc"));// true

alert(Boolean(null)):// false

alert(Boolean(NaN));//false

alert(Boolean(undefined));// false

alert(Boolean(Infinity));// true
//有数据会转化成true,没数据转化成false。


如:

var kc="kong";
if(kc){
 alert("hello"+kc);
}else{
  alert("数据为空") ;
 }

结果:

五、 Null

Null只有一个值null

<script type="text/javascript">
   alert(typeof null);//object
</script>

六、String

String类型:
1、在JS当中字符串可以使用单引号。也可以使用双引号。

var s1='abcdef';

var s2="test";


2、在JS当中,有两种方式创建字符串对象

第一种:

var  s="abc";


第二种(使用Js内置的支持类String):

var  s2=new String("abc");

需要注意的是:String是一个内置的类,可以直接用,String的父类是object。
3、无论小string还是大String,他们的属性和函数都是通用的。

①小string(属于原始类型string)

var x="king";
alert(typeof x); // "string"


②大String(属于Object类型)

var y=new String("abc");

alert(typeof y);// "object" 

获取字符串的长度的函数

<script type="text/javascript">
   var x="king";
var y=new String("abc");
alert("x的长度"+x.length+",y的长度"+y.length);//3,4
</script>

结果

 常用函数

  • indexOf             获取指定字符串在当前字符串中第一次出现处的索引    
  • lastIndexOf       获取指定字符串在当前字符串中最后一次出现处的索引    
  • replace              替换    
  • substr               截取子字符串    
  • substring          截取子字符串    
  • toLowerCase    转换小写    
  • toUpperCase    转换大写    
  • spIit                   拆分字符串
     

indexOf   & lastIndexOf 

 alert('abcda'.indexOf("b"));//1
alert('abcb'.lastIndexOf("b"));//3
alert('abcda'.indexOf("f"));//-1不存在的返回-1

replace(只替换了第一个)

alert("next#int#oser".replace("#","%"))

 在写一个可以再替换一个,其实在原来替换第一个基础上在替换第一个

alert("next#int#oser".replace("#","%").replace("#","%"))

 想全部替换要使用正则表达式

考点:经常问 substr和substring的区别?
 

 substr(startIndex,length) 参数是开始的下标和截取总长度

   substring(startIndex,endIndex)参数是开始的下标和结束的下标注意:不包含结束下标

 substr(startIndex,length)
  alert("abcdefxyz".substr(2,4));//cdef

   substring(startIndex,endIndex)注意:不包含endIndex
 alert("abcdefxyz".substring(2,4));//cd

七、Object

Object类型:
1、0bject类型是所有类型的超类,自定义的任何类型,默认继承object。

2、Obiect类包括哪些属性?
prototype属性(常用的,主要是这个),作用是给类动态的扩展属性和函数。 constructor属性

3、Object类包括哪些函数?
toString() valueOf()
toLocaleString()

4、在js当中定义的类默认继承Object,会继承Object类中所有的属性以及函数。换句话说,自己定义的类中也有prototype属性。

创建类的方式

js中创建类的方式和创建函数一样。

方式①

function 类名(形参){

}

方式②

类名=function(形参){

}

创建对象的语法:

new  类名();

创建类和函数的方式是一样的,所以在调用上就有区别了

<script type="text/javascript">
 function hello(){
   alert("hello javascript And kongchao");
 }
 //当成方法
 hello();
//当成类来创建对象
var obj=new hello();
alert(obj);//[object Object]
 
</script>

 运行结果:

图一弹两次窗,图二一次

在创建类的时候new对象,也得调用一次,所以共两次

 

 JS中的类的定义,同时又是一个构造函数的定义
在JS中类的定义和构造函数的定义是放在一起来完成的。


function User(a,b,c){//abc是形参,属于局部变量。
   //声明属性(this表示当前对象)
  // User类中有三个属性:sno/sname/sage 
   this.sno =a;
   this.sname=b;
   this.sage=c;
}
//创建对象
var u1 = new User(111,"zhangsan", 30);
//访间对象的属性 
alert(u1.sno);//111
 alert(u1.sname); //zhangsan
alert(u1.sage);//30
//访问对象属性的另外一种写法
alert(u1["sno"]);//111
alert(u1["sname"]);//zhangsan
alert(u1["sage"]);//30

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。