JavaScript基础

一.js基础

  • js产生于1995年【世界第一台电脑1946年 中国1952年】

  • ECMA欧洲计算机制造商协会定义的标准 各大浏览器厂商将EAMA作为各自javascript的实现基础

1.内核:
谷歌以前是Webkit内核,现在是Blink内核
IE(edge)Trident内核
火狐Gecko内核
sapariWebkit内核
opera最初是自己的Presto内核,后来是Webkit,现在是Blink内核

2. javascript组成

  • ECMA Script :【规定了js的语法,类型,语句,关键字,操作对象等 ES6 2015.6】
  • DOM:document object model 文档对象模型
  • BOM:browser object model 浏览器对象模型
  • script标签可以放到html页面中任意位置
  • js代码由上至下执行

二、数据类型

弱类型语言:变量类型是由它所包含的数据决定的

1、数据类型
1、typeof() 判断数据类型函数
2、数值型number
3、布尔bollean
3、字符串string
4、undefined
5、null
6、object
2、类型转换
  • 隐式类型转换:
  • 显式类型转换(强制类型转换)
 Number()    【将其他数据类型转换成数值型】
  console.log(Number("12.23"))     //12
  console.log(Number(true))   //1
  console.log(Number(false))  //0
  console.log(Number(""))     //0
  console.log(Number("null"))     //0
  console.log(Number("undefined")) //NaN
  console.log(Number("NaN"))      //NaN
  parseInt()
    console.log(parseInt("hello"))          //NaN
    console.log(parseInt("23aa"))           //23
    console.log(parseInt(12.23))            //12
    console.log(parseInt(0.12))             //0
    console.log(parseInt(true))             //NaN
    console.log(parseInt(false))            //NaN
    console.log(parseInt(""))               //NaN
    console.log(parseInt(25,16))            //37    16进制数,输出10进制
    console.log(parseInt(25,8))             //21
    console.log(parseInt(1001,2))           //***9
    console.log(parseInt(25,10))            //25  

NaN:not a Number 非数值【一个本来要返回数值的操作数,而没有返回数值的情况】

  parseFlot()
  console.log(parseFloat("23.34"))        //23.34
  console.log(parseFloat("23.45.78"))     //23.45
3.进制转换
  • 其他进制转换成10进制
parseInt(25,16)
  parseInt(25,8)
  parseInt(25,10)
  parseInt(101,2)
  • 十进制转换成其他进制
 v1 =23;
  v1.toString(16)
  v1.toString(8)
  v1.toString(2)
  v1.toString(10)
4. 常用方法
  isFinite()  //判断是否是正负有穷
          console.log(isFinite(200e500))      //false
          console.log(isFinite(200e5))      //true

    isNaN()   //判断是否为非数值
        console.log(isNaN("hello"))     //true
        console.log(isNaN(true))        //false
        console.log(isNaN(false))       //false
        console.log(isNaN("10"))         //false

(1) /任何涉及NaN的操作,都返回NaN/

 console.log(NaN/8)  //NaN
    console.log(NaN+8)  //NaN
    console.log(NaN-8)  //NaN
    console.log(NaN*8)  //NaN

(2) /NaN与任何值都不相等,包括t他本身NaN/

 NaN==NaN        //false
    0/0             //NaN
5、常见面试题
console.log(null*5)   //***NaN  0【隐式转换】
NaN*3                 //NaN   
undefined*5           //**      NaN【undefined隐式转换undefined】
"hello"*5             //***     NaN【hello隐式转换NaN】
"23"+5                //235
"23"*5                //115
6、布尔值(Boolean类型)
  true false    
 
  if(10>0){

  }else{ }

  if((10>5)==true){}  等价于  if(10>5){}
  if(!10>5){}

类型转换
Boolean()

 console.log(Boolean(23))            //true
  console.log(Boolean(0))             //false
  console.log(Boolean("hello"))       //true
  console.log(Boolean(""))            //false
  console.log(Boolean(null))          //false
  console.log(Boolean(undefined))     //false
  true      false
数值型         非空       0
字符型         非空串     ""
undefined     返回false
null          返回false
object        任意对象返回都是true
7.undefined类型

(1)变量只声明,未赋值

  var a;
    console.log(typeof(a))  //undefined
    alert(a)                //undefined

(2) alert© //报错

(3)函数没有返回值,默认undefined

 function f1(){
        alert("hello")
    }
    var r=f1()
    console.log(r)          //undefined

(4)调用函数时,应该提供参数,但没有提供,该参数返回undefined

    function f1(a,b){
        alert(a);
        alert(b);
    }
   f1(3)
    console.log(r)          //3  undefined
8、null 空类型 【对象】
   var a=null
    console.log(typeof(a))    //object    null 是一种特殊的object

    var  b ={} 
    b.a=23
    b.f1=function(){}
    b=null
    if(b==null){}
9、object 对象类型

对象就是一定属性和方法的封装体,通过对象能够引用到这些方法和属性

10、typeof
   console.log(typeof(1))      //number
    console.log(typeof(NaN))    //number
    console.log(typeof(Number.MAX_VALUE))    //number
    console.log(typeof(Number.MIN_VALUE))    //number
    console.log(typeof(Infinity))    //number
    console.log(typeof("123"))      //string
    console.log(typeof(true))       //boolean
    console.log(typeof(Date))       //function
    console.log(typeof(c))          //undefined
    console.log(typeof(undefined))  //undefined
    console.log(typeof([]))         //object
    console.log(typeof(Math))       //object
    console.log(typeof(window))     //object
    console.log(typeof(document))   //object
    console.log(typeof(null))       //object

(1)数值类型 typeof返回number

   console.log(typeof(1))      //number
    console.log(typeof(NaN))    //***number
    console.log(typeof(Number.MAX_VALUE))    //number
    console.log(typeof(Number.MIN_VALUE))    //number
    console.log(typeof(Infinity))    //number

(2)字符串类型,typeof返回 string

   typeof("123")   string

(3)布尔类型,typeof返回boolean

   typeof(true)    boolean

(4)对象、数组、null、typeof返回object

 console.log(typeof([]))         //object
      console.log(typeof(Math))       //object
      console.log(typeof(window))     //object
      console.log(typeof(document))   //object
      console.log(typeof(null))       //object

(5)函数类型,typeof返回function

          function f1(){
                 }
  console.log(typeof(eval))
  console.log(typeof(f1));
  console.log(typeof(Date))       //function

(6)未定义的便力量或undefined,typeof返回 undefined

三、流程控制语句

1、
  if(){
      
    }else if(){

    }else if(){

    }else{
    }
2、
switch(){
    case:语句体;
    break;
    case:语句体;
    break;
    case:语句体;
    break;
    default 语句体
}
3、
for(var i= 0;i<5;i++){
    语句体
}
for each  /  for in 

4.while循环
5.do while 循环 至少执行一次
6、break 立即跳出循环
7、continue 停止当前循环,进入下一次循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章 概述 1.1 Javascript简史 在20世纪90年代,也就是早期的WEB站点上,所有的网页内容都是静态的,所谓静态是指,除了点击超链接,你无法通过任何方式同页面进行交互,比 如让页面元素接受事件,修改字体等。人们于是迫切的需要一种方式来打破这个局限,于是到了1996年,网景(Netscape)公司开始研发一种新的语言 Mocha,并将其嵌入到自己的浏览器Netscape中,这种语言可以通过操纵DOM(Document Object Model,文档对象模型)来修改页面,并加入了对鼠标事件的支持。Mocha使用了C的语法,但是设计思想上主要从函数式语言Scheme那里取得了灵 感。当Netscape 2发布的时候,Mocha被改名为LiveScript,当时可能是想让LiveScript为WEB页面注入更多的活力。后来,考虑到这个脚本语言的推 广,网景采取了一种宣传策略,将LiveScript更名为JavaScript,目的是为了跟当时非常流行的面向对象语言Java发生暧昧的关系。这种 策略显然颇具成效,以至于到现在很多初学者还会为JavaScript和Java的关系而感到困惑。 Javascript取得成功了之后,确实为页面注入了活力,微软也紧接着开发自己的浏览器脚本语言,一个是基于BASIC语言的 VBScript,另一个是跟Javascript非常类似的Jscript,但是由于Javascript已经深入人心,所以在随后的版本中,微软的 IE几乎是将Javascript作为一个标准来实现。当然,两者仍然有不兼容的地方。1996年后期,网景向欧洲电脑厂商协会(ECMA)提交了 Javascript的设计,以申请标准化,ECMA去掉了其中的一些实现,并提出了ECMAScript-262标准,并确定Javascript的正 式名字为ECMAScript,但是JavaScript的名字已经深入人心,故本书中仍沿用Javascript这个名字。 1.1.1动态网页 WEB页面在刚开始的时候,是不能动态修改其内容的,要改变一个页面的内容,需要先对网站上的静态HTML文件进行修改,然后需要刷新浏览器。后来 出现的JSP,ASP等服务器端语言可以为页面提供动态的内容,但是如果没有JavaScript则无法在服务器返回之后动态的在前端修改页面,也无法有 诸如鼠标移上某页面元素则高亮该元素之类的效果,因此JavaScript的出现大大的丰富了页面的表现,提高了用户体验。 而当 AJAX流行起来之后,更多的非常绚丽的WEB应用涌现了,而且呈越来越多的趋势,如Gmail,Google Map,Google Reader,Remember the milk,facebook等等优秀的WEB2.0应用,都大量的使用了JavaScript及其衍生的技术AJAX。 1.1.2浏览器之战 1.1.3标准 1.2 JavaScript语言特性 JavaScript 是一门动态的,弱类型,基于原型的脚本语言。在JavaScript中“一切皆对象”,在这一方面,它比其他的OO语言来的更 为彻底,即使作为代码本身载体的function,也是对象,数据与代码的界限在JavaScript中已经相当模糊。虽然它被广泛的应用在WEB客户 端,但是其应用范围远远未局限于此。下面就这几个特点分别介绍: 1.2.1动态性 动态性是指,在一个Javascript对象中,要为一个属性赋值,我们不必事先创建一个字段,只需要在使用的时候做赋值操作即可,如下例: Js代码 1. //定义一个对象 2. var obj = new Object(); 3. //动态创建属性name 4. obj.name = "an object"; 5. //动态创建属性sayHi 6. obj.sayHi = function(){ 7. return "Hi"; 8. } 9. obj.sayHi(); //定义一个对象 var obj = new Object(); //动态创建属性name obj.name = "an object"; //动态创建属性sayHi obj.sayHi = function(){ return "Hi"; } obj.sayHi(); 加入我们使用Java语言,代码可能会是这样: Js代码 1. class Obj{ 2. String name; 3. Function sayHi; 4. public Obj(Sting name, Function sayHi){ 5. this.name = name; 6. this.sayHi = sayHi; 7. } 8. } 9. Obj obj = new Obj("an object", new Function()); class Obj{ String name; Function sayHi; public Obj(Sting name, Function sayHi){ this.name = name; this.sayHi = sayHi; } } Obj obj = new Obj("an object", new Function()); 动态性是非常有用的,这个我们在第三章会详细讲解。 1.2.2弱类型 与Java,C/C++不同,Javascript是弱类型的,它的数据类型无需在声明时指定,解释器会根据上下文对变量进行实例化,比如: Js代码 1. //定义一个变量s,并赋值为字符串 2. var s = "text"; 3. print(s); 4. //赋值s为整型 5. s = 12+5; 6. print(s); 7. //赋值s为浮点型 8. s = 6.3; 9. print(s); 10. //赋值s为一个对象 11. s = new Object(); 12. s.name = "object"; 13. print(s.name); //定义一个变量s,并赋值为字符串 var s = "text"; print(s); //赋值s为整型 s = 12+5; print(s); //赋值s为浮点型 s = 6.3; print(s); //赋值s为一个对象 s = new Object(); s.name = "object"; print(s.name); 结果为: text 17 6.3 Object 可见,Javascript的变量更像是一个容器,类似与Java语言中的顶层对象Object,它可以是任何类型,解释器会根据上下文自动对其造 型。 弱类型的好处在于,一个变量可以很大程度的进行复用,比如String类型的name字段,在被使用后,可以赋值为另一个Number型的对象,而 无需重新创建一个新的变量。不过,弱类型也有其不利的一面,比如在开发面向对象的Javascript的时候,没有类型的判断将会是比较麻烦的问题,不过 我们可以通过别的途径来解决此问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值