由于某些原因,文章已经删除,打算迁移到别处,目前正在寻找更合适的平台。
请大家关注我的新公众号ar_indus,随后我会在公众号里推送新的博客地址。
后续计划的《react进阶系列》文章也会在新公众号中推送。
公众号二维码
ar_indus由于某些原因,文章已经删除,打算迁移到别处,目前正在寻找更合适的平台。
请大家关注我的新公众号ar_indus,随后我会在公众号里推送新的博客地址。
后续计划的《react进阶系列》文章也会在新公众号中推送。
公众号二维码
ar_indus本文标题:前端基础进阶(七):函数与函数式编程
本文链接:https://www.haomeiwen.com/subject/iwkcwttx.html
网友评论
var a = 20; function fn(a) { a = a + 10; return a; }
// 此处少了 fn(a)
console.log(a); // 20
function Person(name) {
this.name = name;
this.age = age;
// 在构造函数内部中添加方法
this.getAge = function() {
return this.age;
}
this.
}
// 给原型添加方法
Person.prototype.getName = function() {
return this.name;
}
// 在对象中添加方法
var a = {
m: 20,
getM: function() {
return this.m;
}
}
@这波能反杀 这段代码中的this是不是掉了什么?
function getUser(path,callback){
return $.get(path,callback);
}
2. 有一点不明白,表达式和语句的区别到底是什么呢?现在还分不清什么是表达式,什么是语句
打印出 { a: [ 1, { c: [Object] } ] }
获取最后一个应该是,数组索引是从0开始的
function getLast(arr) {
return arr[arr.length -1];
}
name: 'Nicholas',
age: 20
}
obj = person
obj.name = 'abc'
console.log(person)
obj = {}
obj.name = 'hahaha'
console.log(person,obj)
我觉得博主的例子没法解释清楚,就算不是函数传值,obj重新赋值就和person没有关系了
var person = {
name: 'Nicholas',
age: 20
}
那么,我定义另一个变量
var p2 = person;
p2 = {};
p2.name = "张三";
console.log(person.name) //输出Nicholas;
如果按照本文的说法,这似乎与第一篇文章中讲的引用类型的变量复制的时候的说法相矛盾(或者我的理解有误)。不过,不可否认的是,波老师对js的理解,确实很深,作者的文章也很受教,希望作者能写出更多的好文章!@这波能反杀
var keys = Object.keys(options);
var o = target ? target : states;
keys.map(function(item) {
if(typeof o[item] == 'undefined') {
o[item] = options[item];
}
else {
type(o[item]) == 'object' ? set(options[item], o[item]) : o[item] = options[item];
}
return item;
})
}
上面这个 我感觉好像有的地方完全没必要啊,你既然最后都是往里追加或者覆盖,那为什么不直接就向下面这样呢?何必绕那么大一圈呢?请大神指教
function set(option,target){
var key = Object.keys(option);
var o = state;
key.map(function (item) {
o[item] = option[item]
})
}
1.既然已经定义了type 方法来判断类型,为什么set()中的类型判读还要用`typeof`。
2. 在set中的typeof类型判读不用 `===` 是因为有涉及到特殊的隐式类型转换吗?
function fn(a) {
a = a + 10;
return a;
}
console.log(a); // 20
波老师,这里有个问题,fn没有调用
name: 'Nicholas',
age: 20
}
function setName(obj) { // 传入一个引用
obj = {}; // 将传入的引用指向另外的值
obj.name = 'Greg';
}
setName(person);
console.log(person.name); // Nicholas 未被改变
这个例子说明的什么呢?若是不把obj置空,打印出来是Greg的
(obj){
obj = 2;
console.log(obj)
},反向推理,假如obj是引用类型,那么我让obj = 2的话,外面也应该变成2,但是事实上,外面还是那个obj,所以传的就是值。
function setName() {
var obj = person;
obj = {}; // 将传入的引用指向另外的值
obj.name = 'Greg';
}
并不能证明传的就是值
o: {
m: {l:{b:0}},
n: 20
}
})
// 修改对象o 的m值
set({
o: {
m: {l:33},
n:6
}
})
为什么这样无法修改o.m的值
function fn(a) {
a = a + 10;
return a;
}
console.log(a); // 20
这个例子里 在console前,少了fn(a)把,这样才能等同比较吧,两个例子
var result = 0;
for(var i = 0; i < arr.length; i++) { return += arr[i] }
return result;
}
这个例子是不是写错了, return += arr[i] ,这里会报错额
哈哈哈 你的文章我都是午休或者下班的时候很喜欢看
顺便下面推荐文章 无戒的21天坚持.. 看成了 戒色的21天坚持
name: 'Nicholas',
age: 20
}
function setName(obj) { // 传入一个引用
obj = {}; // 将传入的引用指向另外的值
obj.name = 'Greg'; // 修改引用的name属性
}
setName(person);
console.log(person.name); // Nicholas 未被改变
这个最后person.name是Nicholas不是‘Grey’,是因为函数中 “obj = {}” 那么这个是复制引用还是创建一个新的值