JavaScript学习(2)

这篇博客介绍了作者在学习JavaScript过程中,通过Chrome浏览器的dev tools进行实践的方法。作者建议初学者先熟悉基本语法,然后在控制台编写小程序来提升技能。文中列举了四个编程题目,包括打印1到N的正整数、计算多项式值、求和及对象的平均值。还探讨了函数定义、分号使用、对象创建和继承等概念。

前言

说实话,JavaScript的语法看得我快吐了,感觉很混乱。所以决定现在上手一点实践。
参考资料:如何循序渐进、有效地学习JavaScript?

编码工具

首先我会把Chrome浏览器装好,在dev tools => console里直接练习熟悉基本语法,变量,数据类型,数学运算,字符串运算,条件,循环基本结构,简单函数定义和调用这些,之所以用chrome dev tools,是因为这时候我不想费劲折腾单独的编辑器,也不需要在开文件和文件夹,然后去配一些工具最终才接触到真正的JS编程,我想尽可能直接而少干扰就开始写JS,这是最重要的,我学JS,当然应该尽快写JS

操作方式,在Chrome浏览器上,按下F12,然后按照gif的操作流程开始使用工具
在这里插入图片描述
使用方式:
Enter运行
Shift + Enter换行

简单编码

熟悉了基本语法以后,我会在devtools => console 里编几个稍微有挑战点的小程序,比如实现fibonaci 数列这种简单的,比如打印一个99乘法表,你也可以自己给自己出几个题,或者网上随机找感兴趣的题目,别人写过没写过不是重点,重点是找点事情做,让自己写代码,别小看这些看起来无聊的程序,在你的熟练度达到可以开始第一个项目之前,这些没有的小程序是最适合练手的,因为它们不牵涉其他方面的知识(比如DOM),所以你不会受到过多干扰,只需要关注用正确的语法写出正确的程序,这个过程会让你更熟悉JS语言本身。

题目地址:
基础编程题目集

1. 本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数。

如何定义函数?函数的声明
(1)function 命令
(2)函数表达式
(3)Function 构造函数
test1:

var n = 10
printN(n);
function printN(N){
	for(i = 1; i<=N; i++){
		console.log(i);
	}
}
输出
VM1705:5 1
VM1705:5 2
VM1705:5 3
VM1705:5 4
VM1705:5 5
VM1705:5 6
VM1705:5 7
VM1705:5 8
VM1705:5 9
VM1705:5 10
undefined

  1. 为什么会多输出一行undefined?

控制台直接运行代码,会返回最后一句代码的返回值

  1. 什么地方用分号,什么地方不用?
    语句以分号结尾,一个分号就表示一个语句结束。多个语句可以写在一行内。
    表达式不需要分号结尾。一旦在表达式后面添加分号,则 JavaScript 引擎就将表达式视为语句,这样会产生一些没有任何意义的语句。
    1 + 3叫做表达式(expression),指一个为了得到返回值的计算式。语句和表达式的区别在于,前者主要为了进行某种操作,一般情况下不需要返回值;后者则是为了得到返回值,一定会返回一个值。
var a = 1 + 3 ; var b = 'abc';
  1. 怎么让输出在一行?
var n = 10
var ans = printN(n)
function printN(N){
	log = "";
	for(i = 1; i<=N; i++){
		log += i;
		if(i == N){
			console.log(log)
		}
		log +=","
	}
}
VM2095:8 1,2,3,4,5,6,7,8,9,10

2.本题要求实现一个函数,计算阶数为n的多项式在x点的值。

在这里插入图片描述

  1. 这个多项式表达式是什么意思?∑是求和的意思,即当i=01,2,3,…,n的时候,a[i] * x^2 的和

  2. 函数的参数和返回值

function fib(num) {
  if (num === 0) return 0;
  if (num === 1) return 1;
  return fib(num - 2) + fib(num - 1);
}

fib(6) // 8
  1. 如何获取数组的长度
    只要是数组,就一定有length属性。该属性是一个动态的值,等于键名中的最大整数加上1。
    var arr = [‘a’, ‘b’];
    arr.length // 2
    arr[1000] = ‘e’;
    arr.length // 1001

test2:

var sum = 0;
n = 2;
a = [2.0, 4.0, 7, 6];
x = 3.0;
sum = f(n,a,x);	//全都是全局变量。可以直接用sum。
console.log(sum)

function f(n,a,x){
	if(a.length < (n+1)){
		return "n太大,导致越界"
	}
	sum = 0;
	for(i = 0; i<=n ; i++){
		sum += a[i] * x**i;
	}
	return sum;
}

VM2875:6 77

3. 简单求和

在这里插入图片描述
如何输入,不会。略过

4. 求自定类型元素的平均

在这里插入图片描述
这个示例用来学习JavaScript的对象。会创建一个对象,自定义它的构造函数,并重写valueOf方法

  1. 怎么创建对象
    对象(object)简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
    对象的所有键名都是字符串(ES6 又引入了 Symbol 值也可以作为键名),所以加不加引号都可以。
var obj = {
  foo: 'Hello',
  bar: 'World'
};
  1. 怎么创建对象内的方法和属性
    对象就是一组“键值对”。其中“值”可以是基本数据类型,但也可以是其他的对象,或者函数
var obj = {
  valueOf: function () {
    return 1;
  }
};
  1. 如何实例化对象
    如何使用构造函数?这件事情有个比较重要的思维需要转变。
    典型的面向对象编程语言(比如C++和Java),存在“类”(class)这个概念。所谓“类”就是对象的模板,对象就是“类”的实例。但是,在JavaScript语言的对象体系,它有一个无类型(class-free)对象系统。在这个系统中,对象直接从其他对象继承属性。JavaScript不是基于“类”的,而是基于构造函数(constructor)和原型链(prototype)
    继承与原型链
    JS原型链与继承别再被问倒了
    JavaScript 中的构造函数
function Person(name,age,job)
{ this.name = name; 
this.age = age; 
this.job = job; 
this.sayName = function(){ alert(this.name); }; 
}
var person1 = new Person('Nike',29,'teacher');
var person2 = new Person('Arvin',20,'student');

test4:

function Obj(value)
{
	this.value = value;
	this.valueOf = function(){
		return parseFloat(value)}
}

function avg(list, N){
	sum = 0;
	for(i=0;i<N;i++){
		sum += list[i].valueOf()
	}
	return sum/N;
}

var obj1 = new Obj(35);
var obj2 = new Obj(35.70);
var list = [obj1, obj2];

console.log(avg(list,2));

//输出
35.35

下面这样会报错

var obj = {
	a:1
	valueOf:function(){
		return 2;
	}
}

这样不会

var obj = {
	valueOf:function(){
		return 1;
	}
}

这样也不会报错

var obj = {};
obj.valueOf = function(){ return 1;}
obj.a = 2;

console.log(obj.valueOf())
//1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值