ZS-面试

81 阅读5分钟

form的action和普通的get,set有什么区别?

formaction 属性和普通的 getset 方法是两个不同的概念。

  1. <form> 元素和 action 属性示例:
<form action="/submit-form" method="POST">
  <label for="name">Name:</label>
  <input type="text" id="name" name="name"><br><br>
  <label for="email">Email:</label>
  <input type="email" id="email" name="email"><br><br>
  <input type="submit" value="Submit">
</form>

上述示例中,<form> 元素定义了一个表单,action 属性指定了表单数据提交的URL地址为 /submit-formmethod 属性指定了使用 POST 方法提交表单。当用户点击提交按钮时,表单数据将被发送到服务器端的 /submit-form 地址进行处理。

  1. 使用普通的 get 和 set 方法示例:
// 使用 get 方法获取数据
function getData(url) {
  return fetch(url)
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));
}

// 使用 set 方法提交数据
function setData(url, data) {
  return fetch(url, {
    method: 'POST',
    body: JSON.stringify(data),
    headers: {
      'Content-Type': 'application/json'
    }
  })
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));
}

// 调用示例
const apiUrl = '/api/data';

// 使用 get 方法获取数据
getData(apiUrl);

// 使用 set 方法提交数据
const postData = { name: 'John', email: 'john@example.com' };
setData(apiUrl, postData);

上述示例中,getData 函数使用 get 方法从指定的URL获取数据,setData 函数使用 set 方法将数据以 POST 请求发送到指定的URL。这里的 getset 方法并非 HTML 表单相关的概念,而是 JavaScript 中使用 Fetch API 或其他网络请求库时的常见方法名。

总结:

  • <form> 元素和 action 属性用于创建和定义表单,指定表单数据提交的URL地址和提交方法。
  • get 和 set 方法一般用于 JavaScript 中进行网络请求,用于获取或提交数据到指定的URL。

了解过浅拷贝和深拷贝吗?

常见的浅拷贝方法
  • Object.assign({}, obj) 使用 Object.assign方法可以将源对象的所有可枚举属性复制到目标对象中。该方法会返回目标对象。需要注意的是,该方法只会拷贝对象的第一层属性,如果对象中有嵌套对象,则仍然是浅拷贝。

  • 数组解构 对于数组,我们可以使用解构语法来进行浅拷贝。例如,[...arr] 可以创建一个新数组,其中包含原数组的所有元素。

常见的深拷贝方法

深拷贝是指创建一个全新的对象,并且递归地复制所有嵌套对象的值,这样原对象和拷贝对象完全独立,互不影响。在 JavaScript 中,常用的深拷贝方法是使用JSON.parse(JSON.stringify(obj)) 

JSON.parse(JSON.stringify(obj))的缺陷

虽然 JSON.parse(JSON.stringify(obj))可以实现深拷贝,但是它有一些缺陷需要注意:

  1. 无法处理 undefined、function、Symbol 等特殊类型,这些类型在转换过程中会丢失。
  2. 无法处理循环引用,即对象中存在循环引用关系时会导致堆栈溢出或报错。

请求有get post put delete请问他们之间的区别是什么?

GETPOSTPUTDELETE 是 HTTP 协议中的四种常见请求方法。它们之间的区别主要体现在以下几个方面:

  1. 语义:GET 请求用于获取资源,而 POST 请求用于提交数据,PUT 请求用于更新资源,DELETE 请求用于删除资源。
  2. 安全性:从安全性角度来看,GET 请求是安全的,因为它只是获取数据,不对服务器上的数据进行修改。而 POSTPUTDELETE 请求都会对服务器上的数据进行修改,因此不太安全。
  3. 参数传递:GET 请求中参数是通过 URL 传递的,而 POSTPUTDELETE 请求中参数是通过请求体传递的。
  4. 数据长度:由于 GET 请求中参数是通过 URL 传递的,所以参数长度受到浏览器和服务器限制,一般不能超过 2KB。而 POSTPUTDELETE 请求中参数是通过请求体传递的,可以传递大量数据。
  5. 缓存:GET 请求可以被缓存下来,而 POSTPUTDELETE 请求则不能被缓存。

总体来说,GET 请求用于获取资源,POST 请求用于提交数据,PUT 请求用于更新资源,DELETE 请求用于删除资源。在实际应用中,我们需要根据具体的业务需求选择合适的请求方法。

get请求能写body吗?post请求能把某一些参数写在连接上吗?

在标准的 HTTP 规范中,GET 请求不应该具有请求体(request body),而是将参数通过 URL 的查询字符串(query string)传递。查询字符串是将参数拼接在 URL 的末尾,形如 ?key1=value1&key2=value2

POST 请求则可以通过请求体(request body)来传递参数。请求体可以包含任意类型的数据,例如 JSON、表单数据等。

在 axios 中,可以使用以下方式发送 GET 请求:

axios.get(url [, config])

其中,url 是请求的 URL,config 是可选的配置对象,可以用来设置请求的相关选项。在 GET 请求中,可以通过 config.params 来设置查询参数,例如:

axios.get('/api/users', {
  params: {
    id: 123,
    name: 'Alice'
  }
})

在 axios 中,可以使用以下方式发送 POST 请求:

axios.post(url [, data [, config]])

其中,url 是请求的 URL,data 是可选的请求体数据,config 是可选的配置对象。如果需要发送 JSON 数据,则可以将 data 设置为一个对象,axios 会自动将其序列化为 JSON 字符串,并设置相应的请求头。例如:

axios.post('/api/users', {
  id: 123,
  name: 'Alice'
}, {
  headers: {
    'Content-Type': 'application/json'
  }
})

请注意,在实际开发中,为了遵循 HTTP 规范,建议将 GET 请求中的参数放在查询字符串中,将非常量的参数放在 POST 请求的请求体中,这样可以提高代码的可靠性和兼容性。

settimeout渲染时间线?