JavaScript笔记

本文详细介绍了JavaScript的基础知识,包括变量的声明规则、数据类型的分类及转换,以及this的关键指向问题。JavaScript由ECMAScript、DOM和BOM三部分组成,变量需先声明再使用,数据类型包括Undefined、Null、Boolean、String、Symbol、Number和Object,其中Number、parseInt和parseFloat用于类型转换。this的指向在不同场景下有所不同,如在函数中默认指向window,在事件处理函数中则指向事件触发的元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始Javascript

js是一种专为域网页交互设计的脚本语言。由三部分组成:
-ECMAScript(ECMA-262定义)提供核心语言功能。(ECMAScript,是一种国际化的标准,所有浏览器都支持)
文档对象模型(DOM)提供访问和操作网页内容的方法和接口。
-浏览器对象模型(BOM)提供与浏览器交互的方法和接口
(其它浏览器对后两部分的支持程度不一样。)

js是一种可以与html标记语言混合使用的脚本语言,其编写的程序可以直接在浏览器中解释执行(与编译、执行)(解释执行,就是解释道哪行代码,就执行哪里。)

js的国际标准是ECMAScript(语法、数组等等。)

<script>标签可以放在任何位置,一般放在<head>标签中

变量:

JavaScript是一种弱形式的脚本语言
var c=3;即变量的声明(变量使用前必须加var声明,编程规范)
规则:
1、变量命名必须以字母或是下标符号“_”或是"$"开头
2、变量名长度不能超过255字符。

3、变量名中不允许使用空格。

4、不用使用脚本语言中保留的关键字及保留付哈作为变量名。

5、变量名区分大小写。

全局变量:在方法外声明的变量,方法内部没有加var关键字声明的变量。

局部变量:在方法内部,使用var声明的变量。

alert相当于window.alert()

alert(‘hello javascript’)

数据类型

共有七种数据类型:Undefined, Null,Boolean, String, Symbol, Number和Object.

前六种是简单(基本)数据类型,其中Boolean, String,Number有基本包装类型,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象

ES6新加了Symbol类型,是一种特殊的、不可变的数据类型,可以作为对象属性的标识符使用。

typeof

· “undefined”如果这个值未定义

· “boolean”如果这个值是布尔值

· “string”如果这个值是字符串

· “number”如果这个值是数值

· “object”如果这个值是对象或者null

· “function”如果这个值是函数

· “symbol”如果这个值是Symbol类型(ES6新增)

实际上JavaScript中函数也是对象。

大体上来说,基本类型的值应该使用 typeof来检测

数据类型转换

一、显式类型转换(强制类型转换):Number()、parseInt()、parseFloat()等

1.Number():Number()方法能将看起来像数字的字符串变成数字,将true转换为1,false转换为0;尽可能地转换。当遇到函数时,Number()方法无法对其转换,将输出NaN。

var a='100';
alert(a+100);//输出  100100
alert(Number(a)+100);//输出  200
  
var a='0000100';//如果100前面很多0
alert(a+100);//输出  0000100100
alert(Number(a)+100);//输出  200  
 
var a='+100';
alert(a+100);//输出  +100100
alert(Number(a)+100);//输出  200  
 
var a='';
alert(a+100);//输出  100
alert(Number(a)+100);//输出  100 
 
var a=' ';
alert(a);//输出一个空格
alert(Number(a));//输出  0 
 
var a=true;
alert(a);//输出 true   
alert(Number(a));//输出  1 	
	
var a=[];//数组为空
alert(a);//无输出
alert(Number(a));//输出  0 
 
var a=[''];//数组里面有空字符串
alert(a);//无输出
alert(Number(a));//输出  0 	
 
var a=[123];
alert(a);//输出  123	
alert(Number(a));//输出  123	
 
var a=[1,2,3];
alert(a);//输出 [1,2,3]
alert(Number(a));//输出 NaN
 
var a=null;
alert(a);//输出 null
alert(Number(a));//输出 0	
 
var a=function(){alert(1)};	
alert(a);//输出  function(){alert(1)}
alert(Number(a));//输出 NaN
	
var json={abc:123};//只要是json类型,就转化不了
alert(json);//输出 [object Object]
alert(Number(json));//输出 NaN	
	
 
var a;
alert(a);//输出 undefined
alert(Number(a));//输出 NaN	

2.ParseInt():parseInt()从左到右一个一个转换,遇到一个非数字的东西,就不再转化了。但是无法转换true/false等其他类型。parseInt()认±和空格,如果遇到,也认为是数字的一部分,也会继续往后走。

var a='100px1564623';//parseInt()从左到右一个一个转换,遇到一个非数字的东西,就不再转化了。但是无法转换true/false等其他类型。parseInt()认+-和空格,如果遇到,也认为是数字的一部分,也会继续往后走。
alert(parseInt(a));//输出  100
alert(parseInt(a,16));//输出 256.将a看成16进制,转换为十进制的数字。默认情况下按十进制转。
 
var a='12.34元';
alert(parseInt(a));//输出  12
  1. ParseFloat():遇到小数点可以使用该方法。
//这时,可以使用方法parseFloat()
alert(parseFloat(a));//输出12.34

二、隐式类型转换:

  1. +。 如‘200’+3 变成字符串

      • / % 比如‘200’-3 变成数字
  2. ++ – 变成数字

  3. a++、a–

  4. < 、> 数字的比较和字符串的比较不同

  5. !取反 把右边的数据类型转成布尔值

  6. ==

alert('200'+3);//输出2003
alert('200'-3);//输出197
 
var a='10';
a++;
alert(a);//输出11
 
alert('10'>9);//字符串和数字比较,进行了强制类型转换。输出true
alert('10'>'9');//输出false 两个字符串在比较时,是按其字符编码进行比较的。按每一数字位进行比较,1<9,所以为false
alert('10000'>'9');//此时,输出还是为false
 
alert(!'ok');//!取反  把右边的数据类型转成布尔值
 
alert('2'==2);//输出 true

三、NaN

定义:not a number不是个数字。不是个数字的数字类型。

所有的数字都是数字类型,但并不是所有的数字类型都是数字。数字和数字类型是两码事。

  1. 一旦写程序中出现了NaN,那么肯定进行了非法的运算操作。
var a=Number('abc');
alert(typeof a);//输出number,说明类型为number
alert(a);//输出NaN
  1. NaN的布尔值是false。
if(a){//此时输出为false。NaN转换布尔值是false
	alert('真');	
}
else {
	alert('假');	
}
  1. 两个NaN并不相等。Nan与自己比较时假。所有数据类型除了NaN以外,其他自己与自己比较都是真。
alert(NaN==NaN);//输出false

isNaN():is not a number 。是否不是一个数字。帮助判断某些值是不是数字。可能值true/false。内部是根据Number()进行转换,如果能够转成一个数字,那么isNaN()输出false,否则输出true。

alert(isNaN(240));//输出false
alert(isNaN('wo'));//输出true

this指向

  1. 定义一个函数fn1(),函数中的this指向window。此时,调用fn1()实际上相当于是window.fn1(); 因此,this指向window
function fn1(){
	alert('alert2'+this);//此时提示内容为[object window]
};
//同样地,对于函数也是一样的
fn1();//实际上也就是window.fn1()
  1. 点击事件是已定义的函数,this指向产生点击事件的元素。
var oBtn=document.getElementById('btn1');
//点击事件是已定义的函数
oBtn.onclick=fn1;//此时提示内容为[object HTMLInputElement]
  1. 点击事件是匿名函数,this指向产生点击事件的元素。
var oBtn=document.getElementById('btn1');
//  点击事件是匿名函数
oBtn.onclick=function(){
	alert('alert3'+this);//此时提示内容为[object HTMLInputElement]
};
  1. 点击事件是匿名函数,匿名函数内部调用已定义的函数fn1(),此时fn1()里面的this指向window。更通俗一点,只要遇到这样已定义的函数,里面的this都指向window。
oBtn.onclick=function(){
	fn1();		//只要遇到这样调用的函数,this都是window
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值