在C基础上,快速入门JavaScript

在C基础上,快速入门JavaScript

(博主决定学习零基础视频链接,转码成本博客)

JavaScript早年是为了方便输入数据的合法性离线验证。

后来可以做游戏了。补充一下,jquery是JavaScript的一个类库。

JS包含三个部分:ECMAScript、DOM(操作文档)、BOM(操作浏览器)。

它不像C需要编译,是解释型的,类似于C的语法结构,是动态语言,基于原型的面向对象。

使用js代码的三个方式:

1、写在html文件的head标签中

<script type="text/javascript">
  /*
  
  */
</script>

2、写在html标签中

3、文件外引用

下面的三句输出:

/*
	控制弹出一个对话
*/
alert("这是我的第一行js代码");
/*
	让计算机在页面中输出一个内容。
  document.write可以向body中输出一个内容
*/
document.write("看我出不出来~~~");

/*
	向控制台输出一个内容
*/
console.log("ckx向控制台输出内容");
        

点击属性

<!--可以将js代码编写到标签的onclick属性中
            当我们点击按钮时,js代码才会执行
        -->
        <button onclick="alert('点我干嘛')">点我一下</button>
<body>
        <!--可以将js代码编写到标签的onclick属性中
            当我们点击按钮时,js代码才会执行
        -->
        <button onclick="alert('点我干嘛')">点我一下</button>


        <!--
            可以将js代码写在超链接的href属性中,这样当点击超链接时,会执行js代码
        -->
        <a href="javascript:alert('让你点你就点')">你也点我一下</a>

        <!---->
        <a href="javascript:;">你也点我一下</a>

</body>

采用外部文件引入。

注意js文件引入后,本标签间的内容就不能用了。

<script type="text/javascript" src="...">中间再写js会忽视</script>

js中严格区分大小写。以分号(;)结尾。

字面量和变量

使用var声明变量

var a;

标识符

可以自主命名的都是。

遵守的规则:和C一样。


在js中一共有6中数据类型。

​ String 字符串

​ Number 数值

​ Boolean 布尔值

​ Null 空值

​ Undefined 定义

​ Object 对象

字符串

字符串就是用引号引起来的。“hello”

转意字符也是’\’

Number

包括整数和浮点数

“typeof 变量” 检查变量类型

NaN是一个特殊的数字,表示Not A number

表示16进制用0x开头,表示8进制用0开头,表示二进制数字用0b开头。

Boolean 布尔值

Null

null类型的值只有一个。就是null

专门用来表示一个为空的对象。

Var a = null;

返回的类型是object。

强制类型转换

用string()函数,可以转换成string类型。

用number()函数,可以转化成number类型。

parseInt() 函数,可以从字符串转到数字。可以将一个字符串中,从开头开始的有效整数内容取出来。也可以用于数字的取整操作。

也可以在parseint函数中传递第二个参数,来指定进制数。

parseFloat(),可以取出小数。

运算符

+:任何值和字符串相加都会转化为字符串,并做拼串操作。

-:字符串会转化为数字。

unicode 编码表

在网页中使用unicode编码:

“&#编码;”,这里的编码是十进制的。

javascript代码块中的变量也是全局变量。完全可见。

var num = prompt("请输入一个大于1的整数:");
alert(num)

Json.stringify

parse(json) 可以解析json

对象

var obj = new Object();
/*或者 
	var obj = {属性名:属性值,属性名:属性值,属性名:属性值,...};
*/
/*向对象中添加 name属性*/
obj.name = "孙悟空";
var n = "name";
console.log( obj[n] );
/* 中括号内是字符串 */

/*删除对象的某一属性*/
delete obj.name;

/*用中括号[],可以找到对象的属性,还可以在中括号中添加变量。*/
in

可以检查obj中是否含有test2属性。

语法:“属性名” in 对象

console.log("test2" in obj);

有返回true,没有false;

基本和引用数据类型。

基本数据类型是复制,引用的是指针。

函数:function

var fun = new Function("语句");

上面利用构造函数创造函数对象,基本不用。

使用函数声明 来创建一个函数。

function fun2([参数1...]){
   函数语句。
}
var fun3 = function(){

}

调用函数时,解析器不会检查参数的个数。多余的参数不会被赋值。不够的情况,那就是undefined。

返回值,用return。

函数可以作为参数传递, 传fun和fun()是有区别的。

函数、对象也都可以是返回的类型。

立即执行函数

function(){
	alert("我是一个匿名函数");
}
//上面直接写是会报错的,要在外面加一对括号,表示一个对象。
//如果直接在后面再加上(),就成为立即执行函数。

(function(){
  alert("我是一个匿名函数");
})();
//如果括号内有参数,也需要填上去。

遍历对象

for(var n in obj) {
  console.log("属性名:" + n);
  console.log("属性值:" + obj[n]);
} 

关于作用域:

1、函数外部,不会看到函数里的变量。

2、在js中一共有两种作用域:

​ 1.全局作用域

​ -直接编写在script标签中的js代码,都在全局作用域。

​ -在页面打开时创建,在关闭时销毁。

​ -在全局作用域中有一个全局对象window,可以直接使用。

​ -在全局作用域中创建的变量都会作为window对象的属性保存。

​ -变量的声明会提前。就是程序一开始,先把带var的语句,都有声明一遍,注意是声明,不是初始化。

​ -函数的声明提前

​ 使用函数声明形式创建的函数function 函数(){}。他会在所有的代码执行之前就被创建。所以可以在声明前调用。

​ 而使用函数表达式 var fun2 = function(){};,不会被提前。

​ 2.函数作用域

​ 在函数作用域中,可以看到全局变量。

​ 如果有同名局部变量,可以使用window.name来利用全局变量。

​ 在函数作用域中,也有声明提前的特性。使用了var,就会提前到函数前部。

this

谁调用函数,函数中的this就指向谁。

构造函数

构造函数就是一个函数,但是可以用它创建特色的实例,比如person的实例等。

不需要new object,直接this,最后也会自动返回this。

function Person(){
  	
}

var per =new Person();
/*
	1.立即创建一个新的对象
	2.将新建的对象设置为函数中的this,在构造函数中,使用this引用
	3.逐行执行函数中的代码
	4.将新建的对象作为返回值返回
	上面只有第三部是我们自己写的代码。
*/

每个函数都有原型地区,但只有构造函数有用,实例自动拥有构造函数的原型区域,也就是说,原型区域中可以放静态的量,静态的函数。

函数中的添加方式:

function fun(){
  
}

fun.prototype.a = 123;
fun.prototype.sayHello = function(){
  
};

用mc.hasOwnProperty()来检查对象自身的属性。

//对象的原型,使用__proto__
mc.__proto__
//对象的原型是一个对象,对象有原型,所以存在mc.__proto__.__proto__

数组

var arr = new Array(1,2,3,4);
// 或者 var arr = [1,2,3,4];
arr[0] = 123;
arr[1] = 233;
arr.length //表示连续数组的长度。
//非连续的数组,会获取到最大的索引+1
//通过修改length,可以删除元素
arr.push(1);
arr.push(1,2,3,4);
/*
pop:
向数组尾添加若干个数据。
unshift:
-向数组开头添加若干个元素,并返回长度
shift:
-可以删除数组的第一个元素,并将被删除的元素作为返回值返回。
*/

遍历数组
//1
for(var i=0; i<arr.length; i++) {
  
}
//2,forEach 不支持ie8以下
//需要函数作为参数,就是不带括号的函数名。
//一般传匿名函数
//回掉函数:由我们创建,但是不有我们调用的函数。
//有三个参数,第一个参数是当前正在遍历的arr元素,第二个参数是索引值,第三个参数是正在遍历的数组
arr.forEach(function(value, index, obj){
  	
});

下面是数组对象的方法,有没有对原数组修改,自己输出看看,console.log(arr);

slice(), 切片操作

从某个已有的数组返回选定的元素。

(Start,End): 提取元素。

不改变原来的数组。

//截取[0,2)间的元素
var result = arr.slice(0, 2);
result = arr.slice(2); //截取从2开始的全部。
//也可以传递负值。

splice()

删除元素,并向数组添加新元素。

改变原来的数组

//从0开始,删除2个元素。
arr.splice(0,2);
//第三个元素及以后,将会自动插入到开始位置索引前边。

被删除的元素作为返回值。

可以用来删除元素,增加元素,替换元素。

删除元素的时候,注意数组元素提前的问题。

concat()

合并两个数组。

join()

将数组转化为一个字符串

reverse()

翻转

sort() 排序

括号内可以添加函数的排序规则。

arr.sort(function(a, b){
		return a>b; 
  //大于0,交换位子
  //否则不交换
});

call(some obj),apply(some obj)

这是函数对象的方法。可以用来指定函数运行时this是哪个对象obj。

call方法中,在obj后,一次传递实参。

apply方法需要将实参封装到一个数组中统一传递。

fun.call(obj, 2, 3);
fun.apply(obj, [2, 3]);

arguments

调用函数时,会传入两个量:this,arguments

Arguments 就是实参列表。

arguments.callee
//就是当前正在执行的函数对象

时间对象 Date

//创建当前时间的对象
var d = new Date();
//创建一个指定时间的对象。
//格式; 月/日/年 时:分:秒
var d2 = new Date("12/03/2016 11:11:30");

getDate() 返回几号

getDay() 返回周几(0表示周日,0~6)

getMonth() 返回月份,(0~11, 0表示一月)

getFullYear(), 返回年。

getTime,获取时间戳。

Date.now() 得到当前时间戳,单位ms。

Math

不是构造函数,是一个工具类。包括一些常量。

Math.PI;
Math.abs();
Math.ceil();//对一个数向上取整
Math.floor();
Math.round();
Math.random();//生成一个0~1间的

包装类

js中有三个包装类,通过这三个包装类可以把基本数据类型的数据转换为对象。

String, Number, Boolean;

var num = new Number(3);
//上面这个操作基本是不用的。
//因为对象的布尔值都是true,不要用。

字符类

var str = "hello worle";
result = str.charCodeAt(1);
//str中第一个字符的unicode编码
result = String.fromCharCode(20045);
// 可以根据字符编码去获取字符
substring
//截取a,b间的字符,如果b < a,会自动交换
str.substring(a, b);
substr
//从3开始,截取长度为2的
result = str.substr(3, 2);

正则表达式

//创建正则表达式对象
//第一个参数是正则表达式,第二个参数是模式选择
// i(忽略大小写) g(全局匹配模式)
var reg = new RegExp("a", "i");
// 还可以简写如下,但是上面那个才可以传变量。
var reg = /a/i;
var str = "a";
reg.text(str);//检查

正则表达式,**^表示开头,$**表示结尾。“.”表示任意字符。

正则表达式、字符串中的**\都表示转译字符,所以在构造表达中,要用两个\\,表示一个\**。

Split()也可以用正则表达式。

match

//找到所有的忽略大小写的匹配,放在数组中返回
result = str.match(/[a-z]/ig);

search

只会匹配第一个。

replace

替换文本用,默认第一个,可以全局。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值